在最新版本的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. HTML5 Canvas 填充与描边(Fill And Stroke)

    HTML5 Canvas 填充与描边(Fill And Stroke) 演示HTML5 Canvas Fill 与Stroke文字效果,基于Canvas如何实 现纹理填充与描边. 一:颜色填充与描边 ...

  2. adm下载器

    netdisk;5.2.7;PC;PC-Windows;6.2.9200;WindowsBaiduYunGuanJia

  3. Struts2 学习第一步准备工作

    第一步:安装下载MyEclispe10 对于MyEclispe的下载安装就不再详述了. 第二步:下载Struts-2.3.15 Struts-2.3.15下载地址: http://struts.apa ...

  4. mysql自动备份

    #!/bin/bash MyUSER="SET-MYSQL-USER-NAME"     # USERNAME MyPASS="SET-PASSWORD"    ...

  5. Effective C++ 条款24

    若全部參数皆需类型转换,请为此採用non-member函数 我们直奔主题 假设你定义一个有理数类例如以下 class Rational{ public: Rational(int numerator= ...

  6. 忘记root密码时如何重设密码

    哈哈,太久没用linux了,把自己的登陆密码给忘了.今天找了下方法如何重设密码以登陆系统. 此文仅以作备忘. 忘记linux密码时,可以使用单用户模式进入linux,修改root密码.1.在linux ...

  7. 如何用C#使用java

    如何使用C#调用Java 今天需要使用C#调用Java的包,研究了一下,大体是以下几种解决方案: 把Java包转换为DLL或者EXE后注册为com组件,之后调用. 使用web service 比如:H ...

  8. Audio Offload

    Audio Offload 音频分载,是系统将音频分载到声卡硬件进行分载处理的功能.从Windows 8开始,音频的硬件加速和分载处理又回来了.为什么说又回来了呢? 因为声卡自创通公司发明开始,相当长 ...

  9. WordPress更改固定链接出现404的解决方案

    很多站长在玩WordPress的时候,可能会碰到一个问题,就是想把WordPress伪静态,在后台设置好固定链接之后,就会出现文章页面或者所有的页面都出现404错误.解决方法如下: 1,.htacce ...

  10. qt的资源替换搜索QDir具体解释

    QDir对跨平台的文件夹操作提供了非常多的便利,为了更加方便的提供全局资源的查找,QDir提供了搜索路径替换功能,攻克了资源搜索不便的问题,也能提高文件查找的效率. QDir通过已知的路径前缀去搜索并 ...