【Android Developers Training】 13. 支持不同平台版本
注:本文翻译自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. 支持不同平台版本的更多相关文章
- 【Android Developers Training】 10. 序言:支持不同设备
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
- 【Android Developers Training】 12. 支持不同屏幕
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
- 【Android Developers Training】 11. 支持不同语言
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
- 【Android Developers Training】 8. 定义Action Bar风格
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
- 【Android Developers Training】 6. 配置Action Bar
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
- 【Android Developers Training】 1. 创建一个Android项目工程
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
- 【Android Developers Training】 41. 向另一台设备发送文件
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
- 【Android Developers Training】 9. 覆盖于布局之上的Action Bar
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
- 【Android Developers Training】 4. 启动另一个Activity
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
随机推荐
- 每天一道Java题[2]
问题 可以直接根据hashCode()方法产生的值判断两个对象是否相等吗? 解答 不能!根据Wikipedia(https://en.wikipedia.org/wiki/Java_hashCode( ...
- 网页web前端学习技巧
1. 写js效果时一定要注意先分析好效果的行为,尽量用最简单通用性的代码.分析步骤可以是1.先把要实现的功能一步一步的写在纸上(即自然语言)2.再根据自然语言翻译成机器语言,用jquery写的代码一定 ...
- 11、借助POI实现Java生成并打印excel报表(2)
11.POI打印功能 11.1.常用模块形式: HSSFPrintSetup printSetup = sheet.getPrintSetup(); printSetup.setVResolution ...
- Cornerstone 3.0.3 for mac 破解版
破解版本 直接安装即可 解压密码:xclient.info 下载地址: 链接: https://pan.baidu.com/s/1mhD64vY 密码: nwmc
- SmartCoder每日站立会议07
站立会议内容 基本框架已出,首页地图功能还没有接入完全. 1.站立会议照片: 2.任务展板 3.燃尽图
- JavaScript中的该如何[更好的]做动效
在用js写动画的时候,无非使用 setTimeout/setInterval 或者 requestAnimationFrame 来处理动画(在jquery的代码里也是这么干的),本文主要为了记录下两者 ...
- Angular随笔第二课
一. 列表表格以及其它迭代型元素 ng-repeat 可能是最有用的angular指令了,它可以根据集合中的项目一次创建一组元素的多份拷贝.不管在什么地方,只要你想创建一组事物的列表,你就可以使用这 ...
- Mysql数据库二进制安装
MySQL数据库有四种安装方法: 源码包编译安装 RPM包安装 二进制文件安装 官方yum源安装 这里我们主要介绍二进制包的安装方法 在MySQL官网下载二进制包并且上传到服务器上 解压二进制包 [r ...
- 【JAVAWEB学习笔记】网上商城实战2:异步加载分类、Redis缓存分类和显示商品
网上商城实战2 今日任务 完成分类模块的功能 完成商品模块的功能 1.1 分类模块的功能: 1.1.1 查询分类的功能: 1.1.2 查询分类的代码实现: 1.1.2.1 创建 ...
- 新写的高仿Arcmap,要的拿去玩玩
本想着对所学的ArcGIS Engine开发作一个了结,于是乎写了这么一个仿照Arcmap的程序.我所见过的地理信息系统中,ArcGIS是功能最完善.二次开发最易上手的平台了(当然别提AutoCAD那 ...