Android 资源国际化问题(3): 不同像素的手机

在博客 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 区别(四)









©️2020 CSDN 皮肤主题: 酷酷鲨 设计师:CSDN官方博客 返回首页