6.10. 特定的资源文件

优质
小牛编辑
132浏览
2023-12-01

6.10.特定的资源文件

Android允许你提供多种资源文件。比如你可以提供不同版本的strings.xml、status.xml或者background.png,针对不同的情景选用不同的资源文件。

假如你想让外国人使用你的应用程序,但他们的语言不同。这时你可能希望提供一个特定语言的strings.xml文件。或者你想让自己的应用程序跑在某设备上,但它的分辨率不一样,这时你可能希望提供一个特定的图片来适应它的分辨率。同样,用户会旋转设备,从portrait模式切换到landscape模式,我们程序的布局也需要对此作出调整。

针对以上的诸多情况,Android给出了一种优雅的解决方案:只需要把特定的资源文件放到另一个目录中即可。比如,我们默认的布局文件在/res/layout目录,如果为landscape模式提供单独布局,那就新建一个文件到/res/layout-land/status.xml。同样,如果我们想为加拿大的用户提供法语版本,那就新建一个文件到res/values-fr-rCA/strings.xml。

从上可知,备用资源文件以它的目录名作为标识。比如加拿大的法语版本那个例子,Android可以认出第一个标志符-fr指"法语",第二个标志符-rCA指"加拿大",而这两个标志符都是表示地区的ISO代码。这样,加拿大魁北克省的用户只要把语言设置为法语,Android就会选用/res/values-fr-rCA/strings.xml文件作为字符串资源。如果没有找到这个文件,则选用默认的/res/values/strings.xml文件。不过,即使用户在法国且语言是法语,它仍选用默认资源文件,因为标识符中的"加拿大"与"法国"不匹配。

(译者注:魁北克是加拿大唯一的法语省。)

通过这些标志符,你可以针对不同的语言、地域、屏幕尺寸与角度、设备交互模式(触摸屏、手写笔)、是否使用键盘等等情景,提供特定的资源文件。但是我们又怎么知道它们对应的命名规范呢?可以参照Eclipse的New Android XML File对话框,如图6.15 "通过New Android XML File对话框设置特定的资源"。选择`` File→New…→Android XML File ``菜单即可。

图6.15. 通过New Android XML File对话框设置特定的资源