在最新版本的Android为app提供很好的新API时,也应该继续支持旧版本的Android直到大部分设备已经更新了。这里将要介绍如何在使用最新API带来的优点的同时继续支持老版本。

Dashboard for Platform Versions会经常更新来展示每个Android版本的活跃设备,是根据访问Google Play Store的设备数量统计出来的。整体上,在app支持支持最新的版本同时,支持90%以上的活跃设备是一个很好的体验。

提示:为了在多个Android版本中提供最好的特性和功能,应该在app中使用Android Support Library,它可以让你在旧版本上可以使用多个最新版本的API。

指定最低和最高API等级

在AndroidManifest.xml中描述了app的详细信息同时也说明了支持哪些Android版本。特别是<uses-sdk元素中的minSdkVersion和targetSdkVersion属性,他们定义了app能兼容的最低API等级和最高的API等级。

例如:

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

当新版的Android发布后,一些属性和行为可能会改变。为了让app在使用新的属性同时保证app适应每个用户的设备,应该设置targetSdkVersion来指定最高支持的Android版本。

在Runtime时查看系统版本

Android在Build常量类中为每个版本地同了一个唯一的编码。在app中使用这些代码来保证那些依赖高版本的API代码只在这些API可用的时候才执行。

 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资源时,Android会忽视当前设备不支持的属性。所以可以很安全的使用新版本才有的新XML属性,不用担心老版本遇到这些代码时会挂掉。例如,如果设置targetSdkVersion="11",app会默认在Android3.0和更高版本中包含ActionBar。然后如果要在action bar中加菜单项,需要在菜单xml资源中设置android:showAsAction="ifRoom"。在多个版本的xml文件中这样做是安全的,因为就老本的Android会直接忽视showAsAction属性(也就是说,不需要单独版本的res/menu-v11/)。

使用平台样式和主题

Android提供了一些用户体验相关的主题可以让app看起来和系统一样。这些主题可以通过manifest文件应用到app中。通过使用自带的样式和主题,app就会和每个Android系统看起来有一样的样式和感觉。

让activity看起来像一个dialog box:

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

让activity有一个透明的背景:

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

应用在/res/values/styles.xml中自定义的样式:

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

要把一个样式应用到整个app中(所有的activity),就在<application>元素中增加android:theme属性:

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

更多关于创建和使用样式的信息,查看Style and Themes

Android - 支持不同的设备 - 支持不同的平台版本的更多相关文章

  1. Android - 支持不同的设备 - 支持不同的屏幕

    Android整体上按照两大类来分类设备屏幕:尺寸和分辨率.app在设备上运行应该考虑大小和分辨率.同样的,你应该包含不同的资源来让app适应不同的屏幕大小和分辨率. 整体上有四种尺寸:小的,正常的, ...

  2. Android - 支持不同的设备 - 支持不同的语言

    把app的字符串放到另外一个文件中是一个好习惯.Android用android工程中的资源文件夹让这件事变的很简单. 如果使用Android SDK Tools创建工程,这个工具会在工程的根目录下创建 ...

  3. RTSPClient工具EasyRTSPClient支持H.265,支持海思等各种芯片平台

    EasyRTSPClient是EasyDarwin开源流媒体团队开发.提供的一套非常稳定.易用.支持重连的RTSPClient工具,接口调用非常简单,再也不用像调用live555那样处理整个RTSP ...

  4. Android - 支持不同的设备

    世界上有各种不一样形状和大小的Android设备.由于有各种不同类型的设备,你的app可能在各种设备上运行.为了在Android上尽可能的成功,你的app需要使配各种不同的设备.最重要的几点需要考虑的 ...

  5. appcompat v21: 让 Android 5.0 前的设备支持 Material Design

    1. 十大Material Design开源项目 2. appcompat v21: 让 Android 5.0 前的设备支持 Material Design 主题 AppCompat已经支持最新的调 ...

  6. 国际化之Android设备支持的语种

    昨天发了关于iOS支持的语种,文章最后也补了安卓支持语种列表.但最后发现安卓设备支持跟它列的有出入,我重新完全手工整理了一遍. 我将对应的语种在安卓的语言列表里的显示,也全部逐一列出来了,方便大家到时 ...

  7. Android学习路线(十九)支持不同设备——支持不同(Android)平台版本号

    当最新的Android版本号为你的应用提供着非常棒的APIs时.你却要在很多其它的设备更新之前继续支持老的系统版本号.这篇课程怎样在继续支持低版本号的系统的情况下使用新版本号的高级API. Platf ...

  8. 传感器(2)常用api简介及列出当前设备支持的传感器代码

    Android SDK提供了Android sensor framework,可以用来访问当前Android设备内置的传感器. ASF提供了很多类和接口,可以帮助我们完成各种与传感器有关的任务. 例如 ...

  9. 【Android Developers Training】 13. 支持不同平台版本

    注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...

随机推荐

  1. html5css3杂记

    最新版本号的safari.chrome.firefox以及opera支持某些html5特性.ie9将支持某些html5特性. html5提供了展现视频的标准<video>支持ogg及mpe ...

  2. 谈谈android反编译和防止反编译的方法(转)

    谈谈android反编译和防止反编译的方法(转) android基于java的,而java反编译工具很强悍,所以对正常apk应用程序基本上可以做到100%反编译还原. 因此开发人员如果不准备开源自己的 ...

  3. java--基于socket的网络传输开发

    继http://blog.csdn.net/gaopeng0071/article/details/10959845此文章内容展开的研究. socket传输是基于tcp的网络传输协议进行的传输,tcp ...

  4. hdu3886(数位dp)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=3886 题意:给一定区间[A,B],一串由/,\,-组成的符号串.求满足符号串的数字个数. •/表示数字 ...

  5. hdu 4908 BestCoder Sequence 发现M中值是字符串数, 需要预处理

    BestCoder Sequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Other ...

  6. Java的图片处理工具类

    import Java.awt.AlphaComposite; import java.awt.Color; import java.awt.Font; import java.awt.Graphic ...

  7. jQuery上传插件Uploadify 3.2在.NET下的详细例子

    项目中要使用Uploadify 3.2来实现图片上传并生成缩略通的功能,特此记下来,以供各位参考! Uploadify下载地址:http://www.uploadify.com/download/ 下 ...

  8. 编译安装LNMP Centos 6.5 x64 + Nginx1.6.0 + PHP5.5.13 + Mysql5.6.19

    (来自:http://www.cnblogs.com/vicowong/archive/2011/12/01/2116212.html) 环境: 系统硬件:vmware vsphere (CPU:2* ...

  9. PyUnit框架学习

    http://www.oschina.net/question/12_27127#INSTALL http://www.360doc.com/content/11/0606/23/54470_1221 ...

  10. eclipse 重构(转)

    Eclipse中的重构类型        如果你看一下Eclipse的重构菜单,可以看到四部分.第一部分是撤销和重做.其他的三部分包含Eclipse提供的三种类型的重构. 第一种类型的重构改变代码的物 ...