安卓训练-开始-支持不同的设备-支持不同的平台版本

来源:互联网 发布:淘宝工具箱套装 编辑:程序博客网 时间:2024/05/21 16:23

支持不同的平台版本

上一课
下一课
这节课教你
  1. 指定最小和目标 API 等级
  2. 运行时检查系统版本
  3. 使用平台样式与主题
你还需要阅读
  • 安卓 API 登记
  • 安卓支持库

虽然最新版本的安卓通常为你的应用提供了优秀的 API,你依然需要支持老版本的安卓,直到更多的设备升级到新版本。这节课教你怎样在支持老版本的同时利用最新版本的 API。

平台版本仪表盘定期更新显示运行每个版本安卓的活动设备的分布(基于访问 Google Play Store 的设备数)。通常,在把你的应用目标设为最新版本的同时支持约 90% 的活动设备是很好的实践。

技巧:为了在多个安卓版本上提供最好的特性和功能,你需要在你的应用中使用安卓支持库,这允许你在老版本上使用一些最近的平台 API。

指定最小和目标 API 等级


AndroidManifest.xml 文件描述了你的应用的详细信息并且指定了它支持的安卓版本。特别地,<uses-sdk> 元素的 minSdkVersiontargetSdkVersion 属性指定了你的应用兼容的最低 API 等级和你设计和测试你的应用的最高 API 等级。

例如:

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

当新版本的安卓发布后,一些样式和行为可能改变。为了让你的应用利用这些变化并确保你的应用适应每种用户设备的样式,你你需要把 targetSdkVersion 的值设置为与最新可用的安卓版本相匹配。

运行时检查系统版本


安卓在 Build 常量类中为每个平台版本提供了一个唯一代码。在你的应用中使用这些代码构造条件语句确保依赖更高 API 级别的代码只有当这些 API 在系统中可用时才执行。

private void setUpActionBar() {    // 确保运行在 Honeycomb 更高版本上才使用操作栏 API    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {        ActionBar actionBar = getActionBar();        actionBar.setDisplayHomeAsUpEnabled(true);    }}

注意:当解析 XML 资源时,安卓会忽略那些当前设备不支持的 XML 属性。所以你可以安全地使用只有新版本才支持的 XML 属性,而不用担心老版本遇到这些代码会崩溃。例如,你设置了targetSdkVersion="11",在安卓 3.0 或更高版本中你的应用默认包含ActionBar。然后,为了在操作栏添加菜单项,你需要在你的菜单资源 XML 中设置android:showAsAction="ifRoom"。在一个跨版本的 XML 文件中这样做是安全的,因为老版本的安卓会直接忽略showAsAction 属性(那就是说,你不需要在res/menu-v11/ 下放一个单独的版本)。

使用平台样式与主题


安卓提供了用户体验主题,能给应用底层操作系统的视感。你的应用可以在清单文件中使用这些主题。通过使用这些内建的样式和主题,你的应用会自然地与新发布的安卓的视感保持一致。

使你的 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">

让你的整个应用(所有 activity)使用一个主题,给 <application> 元素添加 android:theme 属性:

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

更多关于创建和使用主题的信息,参见 样式与主题 指南。

上一课下一课
 
 
1 0