您的位置:首页 > 移动开发 > Android开发

android studio for android learning (四) 兼容性问题

2016-05-21 16:12 465 查看

1.如何支持不同的设备,主要从下面几个方面来看

支持不同的语言

支持不同的屏幕尺寸

支持不现的平台版本(如android的版本)

2.语言兼容:支持不同的语言,这个比较简单,具体可以看下面图中所示,按这个设置进行下就好了。







效果图,可以按这种方式来添加其它的多种语言,本文最后的附录中增加了常见的语言间的对应关系。



3.屏幕尺寸兼容,我们知道android应用在我们生活的各个方面,如何适应各种应用场景下的屏幕尺寸是我们接下来讨论的事情。

3.1 android的屏幕尺寸中有两个重要的属性,尺寸(size)和 密度(density),一个好的APP由合适的尺寸和密度组成。

3.2在一个android项目中,常见的尺寸有下面几种,small, normal, large, xlarge。为了支持不同的屏幕,必须创建相应xml布局支持文件,文件目录的后缀是尺寸结尾(small, normal, large, xlarge),这样android系统就可以根据屏幕尺寸来选择适合的布局文件,如下所示目录结构,注意文件名必须保持一致

MyProject/
res/
layout/
main.xml
layout-large/
main.xml


引用这个文件时,你可以这样做

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}


对于自己提供的文件(landscape),如何告诉系统选择?如下布局即可。

MyProject/
res/
layout/
main.xml
layout-land/
main.xml


如何布局多种属性?例如:large+landscape

MyProject/
res/
layout/              # default (portrait)
main.xml
layout-land/         # landscape
main.xml
layout-large/        # large (portrait)
main.xml
layout-large-land/   # large landscape
main.xml


3.3常见和密度尺寸low (ldpi), medium (mdpi), high (hdpi), extra high (xhdpi)。这意味着同一个文件你要提供多次,保证适合不同的屏幕尺寸。

MyProject/
res/
drawable-xhdpi/
awesomeimage.png
drawable-hdpi/
awesomeimage.png
drawable-mdpi/
awesomeimage.png
drawable-ldpi/
awesomeimage.png


在每一次你使用@drawable/awesomeimage时,系统将会帮你做出正确的选择。

xhdpi: 2.0
hdpi: 1.5
mdpi: 1.0 (baseline)
ldpi: 0.75


ldpi不是必须的,因为只要你提供了hdpi,系统会直接减少一半的hdpi的密度来适应ldpi,现在最新版的SDK可能和上面所述不一样,但不影响我们对这部分的理解.



4.平台兼容性:支持不同的平台版本,这里是指android发面的平台,用来支持旧的平台,同时引入新的平台,在 AndroidManifest.xml 这个文件中指示了我们支持的最低和最高版本,如下所示

<manifest xmlns:android="http://schemas.android.com/apk/res/android" ... >
<uses-sdk android:minSdkVersion="4" android:targetSdkVersion="15" />
...
</manifest>


为了更好的使用android这个平台,我们可以对现有的版本进行检查。

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);
}
}


当然你可用不同的属性

To make your activity look like a dialog box:

<activity android:theme="@android:style/Theme.Dialog">


To make your activity have a transparent background:

<activity android:theme="@android:style/Theme.Translucent">


To apply your own custom theme defined in /res/values/styles.xml:

<activity android:theme="@style/CustomTheme">


To apply a theme to your entire app (all activities), add the android:theme attribute to the element:

<application android:theme="@style/CustomTheme">


本文主要简单介绍了android相关的兼容性问题。

附录

1.android各种常见语言版本示例

Arabic, Egypt (ar_EG) —————————–阿拉伯语,埃及

Arabic, Israel (ar_IL) ——————————-阿拉伯语,以色列

Bulgarian, Bulgaria (bg_BG) ———————保加利亚语,保加利亚

Catalan, Spain (ca_ES) —————————加泰隆语,西班牙

Czech, Czech Republic (cs_CZ) —————–捷克语,捷克共和国

Danish, Denmark(da_DK) ————————丹麦语,丹麦

German, Austria (de_AT) ————————-德语,奥地利

German, Switzerland (de_CH) ——————-德语,瑞士

German, Germany (de_DE) ———————-德语,德国

German, Liechtenstein (de_LI) ——————德语,列支敦士登的

Greek, Greece (el_GR) —————————-希腊语,希腊

English, Australia (en_AU) ————————-英语,澳大利亚

English, Canada (en_CA) ————————–英语,加拿大

English, Britain (en_GB) —————————-英语,英国

English, Ireland (en_IE) —————————–英语,爱尔兰

English, India (en_IN) ——————————–英语,印度

English, New Zealand (en_NZ) ———————英语,新西兰

English, Singapore(en_SG) ————————–英语,新加坡

English, US (en_US) ———————————–英语,美国

English, Zimbabwe (en_ZA) ————————–英语,津巴布韦

Spanish (es_ES) —————————————-西班牙

Spanish, US (es_US) ———————————–西班牙语,美国

Finnish, Finland (fi_FI) ———————————芬兰语,芬兰

French, Belgium (fr_BE) ——————————-法语,比利时

French, Canada (fr_CA) ——————————-法语,加拿大

French, Switzerland (fr_CH) ————————–法语,瑞士

French, France (fr_FR) ——————————–法语,法国

Hebrew, Israel (he_IL) ———————————希伯来语,以色列

Hindi, India (hi_IN) ————————————-印地语,印度

Croatian, Croatia (hr_HR) —————————-克罗地亚语,克罗地亚

Hungarian, Hungary (hu_HU) ————————匈牙利语,匈牙利

Indonesian, Indonesia (id_ID) ————————印尼语,印尼

Italian, Switzerland (it_CH) —————————-意大利语,瑞士

Italian, Italy (it_IT) —————————————意大利语,意大利

Japanese (ja_JP) —————————————-日语

Korean (ko_KR) ——————————————朝鲜语

Lithuanian, Lithuania (lt_LT) ————————–立陶宛语,立陶宛

Latvian, Latvia (lv_LV) ———————————拉托维亚语,拉托维亚

Norwegian-Bokmol, Norway(nb_NO) —————挪威语,挪威

Dutch, Belgium (nl_BE) ——————————–荷兰语,比利时

Dutch, Netherlands (nl_NL) —————————荷兰语,荷兰

Polish (pl_PL) ——————————————-波兰

Portuguese, Brazil (pt_BR) —————————葡萄牙语,巴西

Portuguese, Portugal (pt_PT) ————————葡萄牙语,葡萄牙

Romanian, Romania (ro_RO) ————————罗马尼亚语,罗马尼亚

Russian (ru_RU) —————————————-俄语

Slovak, Slovakia (sk_SK) ——————————斯洛伐克语,斯洛伐克

Slovenian, Slovenia (sl_SI) —————————斯洛文尼亚语,斯洛文尼亚

Serbian (sr_RS) —————————————-塞尔维亚语

Swedish, Sweden (sv_SE) —————————-瑞典语,瑞典

Thai, Thailand (th_TH) ——————————–泰语,泰国

Tagalog, Philippines (tl_PH) ————————–菲律宾语,菲律宾

Turkish, Turkey (tr_TR) ——————————-土耳其语,土耳其

Ukrainian, Ukraine (uk_UA) ————————–联合王国

Vietnamese, Vietnam (vi_VN) ———————–越南语,越南

Chinese, PRC (zh_CN)——————————–中文,中国

Chinese, Taiwan (zh_TW)—————————–中文,台湾
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: