3

我只是不知道如何在位图上绘制(在画布的帮助下),这样结果就不会依赖于设备密度。

这是制作绘图的代码:

ImageView iv = (ImageView)findViewById(R.id.container);
Bitmap result = BitmapFactory.decodeResource(getResources(), R.drawable.big_picture).copy(Bitmap.Config.ARGB_8888, true);
Canvas canvas = new Canvas(result);
canvas.drawBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.small_picture), actualX, actualY, null);
iv.setImageBitmap(result);

我在其中加载了一个 big_picture,Bitmap result我想在其上绘制一个 small_picture,但在指定位置。如果我设置actualX 和actualY,那么在具有相同密度的设备上就可以了。然而,具有不同密度的设备会“缩放”画布。

有趣的是,只有 small_picture 被“缩放”并离开屏幕,但它后面的 pig_picture 恰好适合任何密度屏幕上的屏幕。这是为什么?如何在 big_picture 密度上独立绘制 small_picture?谢谢!

4

1 回答 1

2

我在调试Bitmap. 除非您将图像放入图像中,否则drawable-nodpi图像将重新调整大小以匹配标称设备密度。(分别是 120、160、240、320)如果您将图像“加载”到 aBitmap并且Canvas无论原始图像如何,它们都将具有这些密度之一。

所以一种解决方案是将图像放到drawable-nodpi. 之后,它们在所有密度上的行为都相同。

另一种解决方案是根据上述密度的比率乘以坐标。

...或者您可以为所有限定符制作自定义图像和坐标。

于 2012-05-20T22:34:34.673 回答