![](/img/trans.png)
[英]How should I size my Spinner Image Size in Android app for different screen size/resolutions?
[英]Android: How to display IMAGE for Different screen resolutions/size programmatically
我正在阅读有关Android的多屏支持文档,需要澄清一下。
据我了解,设计三个独特的界面(ldpi,mdpi和hdpi)将是支持所有潜在android屏幕的最佳方法。
但是我相信当您在设计时执行此操作时,这将成立。
但是,如果您以编程方式在运行时创建视图并想要设置背景图片,那么以上内容是否成立?
我正在尝试使用以下方法在画布上绘制位图,
canvas.drawBitmap(BitmapFactory.decodeResource(getResources(),R.drawable.image_1),0,0,null); 在我的自定义视图中扩展SurfaceView,然后在我的主要活动中使用此视图。
现在我正在使用image_1.png,这是使用gimp的480 * 800像素。
如果我在上面的代码中使用此图像,则它无法正确显示,并且图像显得较大,即图像对于屏幕而言显得太大,因此无法显示全部内容。
您能否建议进行此操作的最佳方法是什么?
谢谢,--ad
看到。 将图像分别放在3个文件夹中,每个文件夹具有不同的大小和分辨率,即hdpi,ldpi和mdpi。 您可以通过以下方式调用图片:
R.drawable.image_name
不用担心android会保重,在大屏幕上它将打开hdpi,而在小屏幕上,它将打开ldpi中的图像。
定义时,高度和宽度以dp为单位而不是像素。
嗯,我不太熟悉该drawBitmap方法,但是我在文档中确实看到了这一点:
“如果位图和画布具有不同的密度,则此功能将自动缩放位图,以与画布相同的密度进行绘制。”
Bitmap上有一个getDensity和setDensity方法,因此您可以调用getDensity看看它是什么,然后在drawBitmap之前尝试一下setDensity来看看是否有帮助。
注意:Canvas还具有getDensity方法,因此您可以将其打印到日志中,并查看将位图密度设置为相同的值是否可以防止缩放问题。
还有一个drawBitmap (Bitmap bitmap, Rect src, Rect dst, Paint paint)
方法,该方法在文档中指出:“此函数忽略与位图关联的密度。这是因为源和目标矩形坐标空间位于它们各自的密度,因此必须已经应用了适当的缩放因子。”
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.