Supporting Different Devices

多语言的支持通过将本地化的字符串保存到对应的strings.xml中来实现,需要建立以“-对应语言”为后缀的文件夹来存放,如:
English(default locale): res/values/strings.xml
French: res/values-fr/strings.xml
系统会根据用户设备当前的系统设置正确加载本地化的字符串。

Android用size和density两个属性来对设备屏幕进行归类,有4种size:small, normal, large, xlarge和4种density:low, medium, high, extra high。
屏幕多尺寸的支持是将资源存放在以“-”为后缀的文件夹中来实现的。对布局来说可能还要考虑屏幕的方向来优化布局的显示,如:
res/layout/main.xml # default
res/layout-land/main.xml # landscape
res/layout-large/main.xml # large
res/layout-large-land/main.xml # large landscape
位图则需要对原始的向量图进行缩放来生成对应尺寸的位图,缩放大小:
xhdpi: 2.0
hdpi: 1.5
mdpi: 1
ldip: 0.75
对应文件夹:
res/drawable-xhdpi/awesomeimage.png
res/drawable-hdpi/awesomeimage.png
res/drawable-mdpi/awesomeimage.png
res/drawable-ldpi/awesomeimage.png

多系统版本的支持一是通过在AndroidManifest.xml中通过minSdkVersion和targetSdkVersion来指定支持的最低和最高系统版本,二是尽量使用Android Support Library来在老系统中支持新的特性,三是编码中动态判断是否启用对用特性,如:
private void setUpActionBar() {
// Make sure we’re running on Honeycomb or higher to use ActionBar APIs
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
ActionBar actionBar = getActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
}
}
四是系统解析XML时会忽略不支持的属性。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据