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

原文链接:http://developer.android.com/training/basics/supporting-devices/platforms.html


尽管最新版本的Android系统为你的应用提供了大量的API,你仍然应该继续支持较老版本的Android,直到更多的设备更新了系统。这堂课将向你展示应该如何利用新API的同时,还可以继续支持过去的版本。

Platform Versions中的面板中,会定期地更新所有活跃设备所使用的系统版本的比例,这些信息来自于访问了谷歌应用市场(Google Store Play)的设备。当将你的应用定位于最新版本的Android系统时,支持90%左右的活跃设备是一个值得提倡的好习惯。

Tip:

为了在多个Android版本中都能得到最佳的特性和功能,你应该在你的应用中使用Android Support Library,这可以允许你在较旧的版本中,使用一些最近平台的API。

一). 指定最低和目标API Level

AndroidManifest.xml文件中,描述了你的应用的细节,和它所支持的Android版本。特别地,<uses-sdk>标签中的“minSdkVersion”表示了你的应用所能兼容的最低系统版本,而“targetSdkVersion”属性字段表示了你的应用是基于哪个版本(最高的)系统进行开发和测试的。

例如:

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

当一个新的Android系统发布后,一些风格和行为可能会改变。为了使你的应用可以使用这些改变带来的好处,并使你的应用能够在每个用户的设备上适用,你应该将targetSdkVersion设置为最新的Android系统版本。

二). 在运行时检查系统版本

Android为每个系统版本提供了独一无二的系统代号,这些代号是Build类中的静态常量。你可以在你的应用中通过使用这些代码,来保证那些依赖于较高API Level的代码仅在系统负荷要求的情况下才会被运行。

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

Note:

当解析XML资源文件时,Android会将当前设备部支持的XML属性字段忽略。所以你可以放心地使用只在较新的系统版本中才支持的属性字段,而不必担心旧版本当遇到这些字段时应用汇崩溃。例如,如果你设置:“targetSdkVersion=11”,你的应用在Android 3.0或更高的系统平台上使用了默认的Action Bar。然后为了给Action Bar添加菜单项,你需要在你的菜单(menu)XML资源文件中设置:“android:showAsAction=ifRoom”。即使是跨版本情况,这样做也是安全的,因为旧版本的Android会直接忽略“showAsAction”这个属性字段。(所以,你不需要类似于“res/menu-v11/”这样的文件)

三). 使用平台的风格和主题

Andorid提供了和基本操作系统的外观相切合的用户主题。这些主题可以通过清单文件应用到你的系统当中。通过使用这些内置的风格和主题,你的应用可以和新发布的Android系统风格保持一致。

比如,使你的activity看上去像一个对话框:

<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中,在<application>标签下添加“android:theme”属性字段:

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

阅读Styles and Themes获得更多关于创建和使用主题的信息。

【Android Developers Training】 13. 支持不同平台版本的更多相关文章

  1. 【Android Developers Training】 10. 序言:支持不同设备

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

  2. 【Android Developers Training】 12. 支持不同屏幕

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

  3. 【Android Developers Training】 11. 支持不同语言

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

  4. 【Android Developers Training】 8. 定义Action Bar风格

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

  5. 【Android Developers Training】 6. 配置Action Bar

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

  6. 【Android Developers Training】 1. 创建一个Android项目工程

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

  7. 【Android Developers Training】 41. 向另一台设备发送文件

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

  8. 【Android Developers Training】 9. 覆盖于布局之上的Action Bar

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

  9. 【Android Developers Training】 4. 启动另一个Activity

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

随机推荐

  1. 由"永恒之蓝"病毒而来的电脑科普知识

    永恒之蓝病毒事件: 继英国医院被攻击,随后在刚刚过去的5月12日晚上20点左右肆虐中国高校的WannaCry勒索事件,全国各地的高校学生纷纷反映,自己的电脑遭到病毒的攻击,文档被加密,壁纸遭到篡改,并 ...

  2. JAVA THREAD.JOIN方法详解

    一.使用方式. join是Thread类的一个方法,启动线程后直接调用,例如: Thread t = new AThread(); t.start(); t.join(); 二.为什么要用join() ...

  3. 让xcode8支持7.0的设备

    升级到xcode8之后发现不能支持7.0设备 1 . 下载文件将文件覆盖到 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS. ...

  4. ES6核心内容精讲--快速实践ES6(一)

    前言 本文大量参考了阮一峰老师的开源教程ECMAScript6入门,适合新手入门或者对ES6常用知识点进行全面回顾,目标是以较少的篇幅涵盖ES6及部分ES7在实践中的绝大多数使用场景.更全面.更深入的 ...

  5. JBoss7安装、测试、配置和启动以及停止,部署

    转:http://www.hongyanliren.com/2014m01/3013.html 内容概要 JBoss系列三主要目的是演示如何部署应用到JBoss7/WildFly,如下图中描述了部署应 ...

  6. java集合(2)- java中HashMap详解

    java中HashMap详解 基于哈希表的 Map 接口的实现.此实现提供所有可选的映射操作,并允许使用 null 值和 null 键.(除了非同步和允许使用 null 之外,HashMap 类与 H ...

  7. Centos7 最小系统安装Redis

    最近想写一个调度系统,一顿查资料之后决定用Django+Celery+Redis实现,前面两个都已经有了,就缺一个Redis,所以准备安装一个Redis 获取Centos7并配置网络 获取Centos ...

  8. Python教程(1.1)——配置Python环境

    在正式开始学习Python之前我们需要先配置好Python环境. Python Python可以从Python官方网站上,选择适合你的操作系统的版本下载.下载完之后,运行下载的可执行文件进行安装. 这 ...

  9. 数据库MySQL安装和校验

    1.安装MySQL 双击已经下载的安装包: Typical:典型安装,第一次安装建议选择该类安装 Custom:自定义安装,在对数据库熟悉后,知道自己需要哪些组件时,可以选择该类安装(这里选择的是自定 ...

  10. TreeMap集合特点、排序原理

    TreeMap特点(类似于TreeSet): 1.无序,不允许重复(无序指元素顺序与添加顺序不一致) 2.TreeMap集合默认会对键进行排序,所以键必须实现自然排序和定制排序中的一种 3..底层使用 ...