
12.1 建立本地化的资源目录
我们可以设想,有两部不同分辨率的手机(320*480和480*800)要使用一些图像资源,为了使图像不失真,就需要为不同分辨率的手机指定不同的图像。为此,可以建立如图12-1所示的图像资源目录结构。

▲图12-1 满足不同屏幕分辨率
在res目录中建立了3个图像资源目录:drawable、drawable-hdpi和drawable-mdpi。其中drawable为默认的图像资源目录,drawable-hdpi保存了在高屏幕密度(指480*800或相近的分辨率)情况下使用的图像资源,drawable-mdpi保存了在中屏幕密度(指320*480或相近的分辨率)情况下使用的图像资源。
如果当前手机为高密度屏幕(分辨率为480*800或相近的值),系统会自动到drawable-hdpi目录中找相应的图像资源。如果为中密度屏幕(分辨率为320*480或相近的值),就会到drawable-mdpi目录中找相应的图像资源。当然,如果是低密度(分辨率为240*320或相近的值),就会到默认的drawable目录找相应的图像资源。这3个图像资源目录中的图像文件名是完全相同的。除了屏幕密度,还可以对屏幕方向、语言、Android SDK版本等诸多方面进行本地化控制。其中默认资源目录名后面用连字符(-)连接的部分(如hdpi、mdpi等)被称为配置标识符(Configuration Qualifier)。表12-1是Android SDK支持的配置标识符。
表12-1 Android SDK支持的配置标识符

续表

续表

续表

使用配置标示符时应首先了解如下几点。
有很多配置标识符的值并不要求物理的值一定相等,而是接近。例如,sw600dp要求物理屏幕的最小宽度等于或大于600dp即可。也可以理解为真实屏幕的最小宽度至少应为600dp。
有些配置标识符的值只是近似等于某个值,并不一定是相等的,例如,屏幕密度用于智能电视的tvdpi约等于213dpi,实际屏幕的密度可能比这个值大些,也可能比这个屏幕小些。