繁体   English   中英

Android:如何以编程方式显示不同屏幕分辨率/大小的图像

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM