因为我看的是android的官方文档,这里就根据官方文档的内容来写。
Android支持不同的设备包括三个方面:支持不同的语言、支持不同的屏幕大小、支持不懂的版本。
1.支持不同的语言
android系统会获取手机用户在手机“设置”中的语言来和你写的代码进行匹配,来显示对应的语言。
添加对多语言的支持就需要在res文件夹下新建value目录,并且在文件名称末尾加上ISO的语言代码。例如value-zh就代表的中文。
一旦您决定了为哪些语言提供支持,便可创建资源子目录和字符串资源文件。 例如:
res/
values/
strings.xml
values-zh/
strings.xml
将各个语言区域的字符串值添加到相应文件中。例如:
英文(在android中values文件夹是默认的英文)/values/strings.xml
<resources>
<string name="name">this my project</string>
</resources>
中文/values-zh/strings.xml
这才是中文应该存在的文件夹
<resources>
<string name="name">这是我的工程</string>
</resources>
但是中文分为繁体字和简体字,当你查询ISO语言代码时,中文有4个:
zh-tw 中文(中国台湾)
zh-cn 中文(中华人民共和国)
zh-hk 中文(中国香港特别行政区)
zh-sg 中文(新加坡)
这时候把values的文件命名写成values-zh-cn/或者写成values-zh_cn都是不正确的,甚至在运行时会报错,这时候就要在横杠后面加上一个小写的r并且小r后面的字母大写,例如 :values-zh-rCN/这就表示简体中文,values-zh-rHK/这就表示香港的繁体中文,……
2.支持不同的屏幕大小
Android设备的屏幕使用了2个属性:大小和密度。
大小主要是对于layout布局来说的,有四个尺寸:small, normal, large, xlarge
密度主要是对于Bitmap来说的,也有几个密度:low (ldpi), medium (mdpi), high (hdpi), extra high (xhdpi)
他们的用法和drawable和mipmap相似都是在后边加上代表尺寸的单词(上边写的)
对于layout布局来说,应该如下进行命名
res/
layout/ # default (portrait)
main.xml
layout-land/ # landscape
main.xml
layout-large/ # large (portrait)
main.xml
layout-large-land/ # large landscape
main.xml
这些匹配系统会自动的进行匹配,你所关心的应该是布局的结构,不要使他发生太多变化。
这四个尺寸已经过时,有兴趣的可以去看一下新的尺寸命名格式。
对于Bitmap来说,控制他的实际是密度,最熟悉的命名就是drawable。
res/
drawable-xhdpi/
awesomeimage.png
drawable-hdpi/
awesomeimage.png
drawable-mdpi/
awesomeimage.png
drawable-ldpi/
awesomeimage.png
这里讲的这是对文件夹的扩展,并不是详细的讲系统适配,只是简单的涉及到了,以后会详细的讲一下适配。
3、支持不同的版本
在 AndroidManifest.xml文件中,可以对目标版本和最低版本进行控制,如下:
<uses-sdk android:minSdkVersion="4" android:targetSdkVersion="15" />
其中targetSdkVersion指的就是目标版本,就是告诉手机系统在此版本上你已经进行了完全测试,不用进行兼容性的活动,提高运行的效率,当手机版本大于这个值时,开启兼容性活动。
在代码中,根据系统提供的Build类来判断当前的系统版本,在代码中做进一步的处理。代码如下:
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);
}
}
同时android还提供了样式和主题,而且这些主题是内置的,使应用程序具有底层操作系统的外观和感觉。例如
让你的activity看起来像一个dialog:
<activity android:theme="@android:style/Theme.Dialog">
让你的activity有一个透明的背景:
<activity android:theme="@android:style/Theme.Translucent">
允许你在 /res/values/styles.xml:中自定义theme:
<activity android:theme="@style/CustomTheme">
要将主题应用到整个应用程序(所有活动):
<application android:theme="@style/CustomTheme">