Android 位图+;画布密度相关性

Android 位图+;画布密度相关性,android,Android,我就是不知道如何(借助画布)绘制位图,这样结果就不会依赖于设备密度 以下是生成图形的代码: 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

我就是不知道如何(借助画布)绘制位图,这样结果就不会依赖于设备密度

以下是生成图形的代码:

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);
我在
位图结果
中加载了一幅大图片,我想在上面的指定位置绘制一幅小图片。如果我设置了actualX,那么在一个密度相同的设备上就可以了。但是,不同密度的设备会“缩放”画布

有趣的是,只有小图片被“缩放”并从屏幕上消失,但它后面的猪图片正好适合任何密度的屏幕。 为什么呢?如何在大图密度上独立绘制小图?
谢谢大家!

我在调试了
位图之后发现了什么情况。除非您将图像放入
drawable nodpi
中,否则图像将重新调整大小以匹配标称设备密度。(即120、160、240、320)如果将图像“加载”到
位图和
画布中,则无论原始图像的密度如何,它们都将具有其中一种密度

因此,一种解决方案是将图像放到
可绘制的nodpi
。之后,它们将在所有密度上表现相同

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


…或者您可以为所有限定符创建自定义图像和坐标。

另一个选项是传递位图工厂。inScaled=false的选项对象: