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的选项对象: