我正在编写一个显示大量图像的应用程序(目前正在使用Gallery,但很快就会离开它)。每个图像占据整个屏幕,顶部的ActionBar除外。我的应用程序最终会在每个库中拥有大约80张图片。
我想为不同类型的设备提供适当大小的图像,从小型手机到大型平板电脑。我知道我可以使用ldpi,mdpi和hdpi文件夹,但我不知道每个图像的大小。
当我使用.png文件时,我也不确定是否应该使用.9.png文件,以及是否只需将.png更改为.9.png和Android将负责缩放/倾斜。
在开发过程中,我只为我的应用提供ldpi和hdpi图像。对于hdpi,我已经猜到了640x680(每个大约435k),ldpi和768x1024(每个大约1.2m)。我对这些尺寸的实际文件大小不满意。
任何人都可以告诉我我的图像应该是什么尺寸以及是否还有其他什么我应该考虑?
请不要只是阅读http://developer.android.com/guide/practices/screens_support.html,因为这涉及到解决方案,我无法解释这与我的问题有什么关系。
提前致谢,
标记。
答案 0 :(得分:1)
使用9-patch drawables(.9.png)只有在您的图像可以被拉伸而不会看起来很奇怪时才有用。例如,渐变可以用作9补丁,但是照片不能用,因为比例会被拉伸。 Android无法为您进行拉伸,因为您的9个色块必须具有拉伸/填充区域,这些区域是通过在图像周围的1px边框中放置黑色像素来定义的(see here for more info)
就图像尺寸而言,这更复杂。例如,在手机大小的mdpi设备(屏幕分辨率为480x320)上填满屏幕的图像不会在mdpi平板设备(屏幕分辨率为1280x800)上填满屏幕而不会吹图像了。 dpi图像限定符旨在使图像和图标在不同的屏幕上具有相同的物理大小。
一个想法可能是将您的图像放在drawable-nodpi(或assets)文件夹中可以获得的最高分辨率。接下来找到显示器的大小(以像素为单位)(不是与显示无关的像素),然后从高度(大约48dp或56dp,我确定它在文档中的某处说明)中减去操作栏的大小。然后,使用BitmapFactory
按照之前找到的显示大小解码图像(this answer将有助于解决此问题)。但是,这可能是处理器密集型的,所以并不理想。或者,在服务器上保持特定分辨率的图像集,当用户第一次启动应用程序时,下载与其屏幕尺寸最匹配的图像。