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.xmllayout-large/main.xml

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

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

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

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

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

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

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

MyProject/res/drawable-xhdpi/awesomeimage.pngdrawable-hdpi/awesomeimage.pngdrawable-mdpi/awesomeimage.pngdrawable-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 APIsif (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)—————————–中文,台湾

android studio for android learning (四) 兼容性问题相关推荐

  1. Android Studio 插件开发详解四:填坑

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/78265540 本文出自[赵彦军的博客] 系列目录 Android Gradle使用 ...

  2. android studio设置Tab为四空格缩进

    今天,简单讲讲android studio 如何设置代码的缩进为4空格. 其实也很简单,有人认为android studio使用Tab缩进也没有问题,这个在android studio上确实是没有问题 ...

  3. Android开发工具Android Studio、Android SDK和Genymotion完全配置

    所谓"工欲善其事,必先利其器".Android Studio 是谷歌推出一个Android集成开发工具,基于IntelliJ IDEA. 类似 Eclipse ADT,Androi ...

  4. 【Android Studio】Android Studio 搭建开发环境(Linux Ubuntu篇)

    Windows篇:[Android Studio]Android Studio 搭建开发环境(Windows篇)_dandelionela的博客-CSDN博客 Ubuntu篇参考: Ubuntu 18 ...

  5. 【Android studio】Android studio的安装及模拟器(夜神)的连接

    一.安装JDK,配置环境变量 在此之前jdk已经安装好了,因此不再进行安装,通过cmd命令行检查环境变量是否已经配置好: 进入cmd命令行,输入java –version查看java版本 从图中可以看 ...

  6. 【Android应用开发】Android Studio 简介 (Android Studio Overview)

    一. Intelij IDEA 环境简介 Android Studio 来源 : Android Studio 是 Intelij IDEA 的免费版本 + Android SDK 集成的; -- I ...

  7. 使用Android Studio搭建Android集成开发环境

    一.Android Studio简单介绍 2013年GoogleI/O大会首次发布了Android Studio IDE(Android平台集成开发环境).它基于Intellij IDEA开发环境,旨 ...

  8. android+图标+i_explore+无背景,Android Studio中Android Device Monitor中的File Explore不显示文...

    环境:操作系统是Mac,模拟器 问题:Android Studio中Android Device Monitor中的File Explore不显示文件 本人在自学文件存储,想查看"dada/ ...

  9. 在Android Studio中将Android工程变为Library使用

    在Android Studio中将Android工程变为Library使用 转载2016-03-28 10:43:58 有时候网上会有些工程格式不是我们想要的Library格式可以直接给AS使用.这时 ...

  10. android studio - 解决Android Studio不停的Indexing的问题

    android studio - 解决Android Studio不停的Indexing的问题 参考文章: (1)android studio - 解决Android Studio不停的Indexin ...

最新文章

  1. Nginx 高可用集群解决方案 Nginx + Keepalived
  2. 企业想独立完成网站建设也不是不可以
  3. 由于分形导致的神经网络分类误差
  4. MySQL的insert into select 引发锁表
  5. 百练OJ:4151:电影节
  6. c++大作业迷宫游戏 规定时间内完成_小学生做作业磨蹭的7个原因及对策!太准了~...
  7. ADO.NET DataSet 数据模型
  8. 20145335 《信息安全系统设计基础》课程总结
  9. php 2m限制,取消php上传2M的限制
  10. 马化腾:整天在拍拍网上买东西,找感觉
  11. 阿里云IoT安全运营中心-Link SOC,安全运营托管功能发布
  12. 大数据分析有几种方法
  13. 超级简单Python学生信息管理系统设计与实现.zip(论文+项目源码+使用说明书)
  14. PowerShell复制粘贴快捷键
  15. csv to dbf java_将csv文件转换为dbf
  16. Python中使用print函数的三种输出方式
  17. cad断点快捷键_CAD中打断于点的快捷键
  18. 给出一个不多于五位的正整数,求出它是几位数
  19. 小话HTTP Authentication
  20. 16丨数据分析基础篇答疑

热门文章

  1. 对象的引用传递 ——面向对象3
  2. OAF_文件系列9_实现OAF解析Excel并读取至数据库JXL
  3. Android实现仿IOS带清空功能的文本输入框
  4. html 页面循环判断值,变量交换,判断有值、数字,for循环.html
  5. php 的sentmail支持ssl吗_php 的swoole 和websocket 连接wss
  6. 【枚举排列】生成1~n的排列生成可重集的排列
  7. 虚拟主机网站搬到服务器上,如何把网页文件放到云虚拟主机
  8. java nio 追加写文件_java.nio.file读写文件
  9. 谷歌插件开发ajax请求,2020-01-03(chrome插件:拦截ajax请求并修改返回结果)
  10. matlab 给参数赋值,未对输出参数赋值 求大神帮忙解惑