【发布时间】:2016-03-25 18:14:22
【问题描述】:
我为 ldpi 到 xxxhdpi 创建了一些测试资产,并将它们放在相应的可绘制文件夹中。如果我在屏幕的角落画东西说位置
0,0 or 0+canvas.getWidth()-bitmap.getWidth()
或类似的东西它们在所有设备屏幕上正确对齐。
我希望能够在屏幕上的任何位置绘制我的位图,并在所有设备尺寸上正确调整它们的比例,但我就是不明白。
绘图代码相同。通过添加比例,我能够让 Paint 正确缩放线条。位图也相对于它们的屏幕尺寸进行缩放,但我如何在代码中以 50 个单位进行绘制并使其在所有设备上都是 50 个单位?
初始化函数
Paint p = new Paint();
p.setColor(Color.RED);
p.setStyle(Paint.Style.FILL_AND_STROKE);
float scale = context.getResources().getDisplayMetrics().density;
p.setStrokeWidth(40*scale);
Bitmap ball = BitmapFactory.decodeResource(context.getResources(), R.drawable.ball);
渲染功能
canvas.drawLine(0, 0, 400, 400, p);
canvas.drawBitmap(ball, 50, 50, null);
canvas.drawBitmap(ball2, 150, 150, null);
从上面的屏幕截图中,您可以看到两个错误。线的长度,它是 400px 长。现在这只是我选择的一个数字,但在较小的手机上它走得太远了。
您还可以看到它们在一台设备上相距甚远,但在第二台设备上却彼此重叠。
什么可以解决这个问题?
【问题讨论】:
标签: android android-canvas scale android-drawable android-bitmap