在博客 Android 资源国际化问题(2): finger的迷惑 基础之上,继续探讨资源国际化问题。
不同像素的手机,可以配置不同的文件,先看几个概念。
具体可参看sdk-path/docs/guide/practices/screens_support.html
可以看出,模拟器对于小屏幕Small Screen的QVGA(320x240)就是ldpi、对于Nomal screen来说HVGA(480x320)就是mdpi。其它的见上述,可自己分析。
新建android项目,res文件夹如下:
三张icon图片名称一样,但是内容不一样,按照上面排列顺序,三张图片分别是:、、
main.xml与上篇博客的内容一致,可参考 Android 资源国际化问题(2): finger的迷惑
运行app在吗320*480的模拟器上面,显示效果如下
竖屏时,显示效果:
横屏时,显示效果:
可以看出,选择显示的是drawable-mdpi文件夹下面的图片。
运行app在吗320*240的模拟器上面,显示效果如下
竖屏时,显示效果:
横屏时,显示效果:
可以看出,选择显示的是drawable-ldpi文件夹下面的图片。
对于其它像素的手机,您可以自己测试。
那么,在不同的手机中如何选择图片呢?sdk api有这样一句话:
There is thus a 3:4:6 scaling ratio between the three densities, so a 9x9 bitmap in ldpi is 12x12 in mdpi and 18x18 in hdpi.
说明,要遵循 l:m:h = 3:4:6 的比例来为您的app选择图片。来接着挖掘信息,看这张图:
计算一下, l:m:h:x = 120:160:240:320 = 3:4:6:8
换句话说,您在drawable-ldpi中准备图片是在32x32,那么drawable-mdpi、drawable-hdpi、drawable-xdpi就需要48x48、72x72、96x96的图片。
注意:xhdpi只适合android2.2及以上手机。
这里必须明白一点,就是如果你只准备适合一种像素的drawable文件夹,如drawable-hdpi,并不是在ldpi的手机上就不会显示图片或者报错的问题。因为资源名称是惟一的,在ldpi手机上照样可以显示图片资源,只不过不好看而已。
另外,nodpi官方解释nodpi
: This can be used for bitmap resources that you do not want to be scaled to match the device density.
就是说drawable-nodpi下的不可以在不同像素的手机上自动缩放,那么可以在该文件夹下面放一些Bitmap(位图),当让名称可以与其它drawable文件夹下面的图片名称不一致。具体什么意思,后会有期吧。
推荐文章
Android Drawable、Bitmap、Canvas和Paint的区别
图片:jpg png gif bmp 区别(四)