天天看点

Training--支持不同的平台版本

支持不同的平台版本

虽然最新的安卓版本提供了更丰富的API供你使用,但是由于众多的手机不能及时更新到最新版本,你仍然需要支持旧版本。本课将教会你在支持旧版本的基础上,同时可以使用新版本的API。

 平台版本  网站公布了每个安卓版本的分布统计情况,统计数据来源于谷歌应用商店的设备访问量。通常比较好的情况是,你的app应该支持大约90%的手机,同时适用于最新的安卓版本。

注意:为了在不同的安卓版本上提供最好的功能,以及在旧版本上也能使用若干新的平台上的API,你应该使用安卓支持库。

指定最小和目标API等级

AndroidManifest.xml文件描述了你的app的细节信息并且也声明了它支持的安卓版本。尤其注意地是,<uses-sdk >元素里的minSdkVersion和targetSdkVersion属性分别指明了你的app所能兼容的最低API等级和在哪个最高API等级上对你的app进行的设计和测试。

例如:

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

随着新的安卓版本的发布,一些风格和行为可能发生变化。为了允许你的app很好地利用这些变化,并且为了确保你的app适应每一个用户手机的风格,你应该将targetSdkVersion值设定为最新的版本号。

在运行时检查系统版本

安卓在每个平台版本的Build常量类里提供了唯一的代码。在你的app里使用这些代码,可以确保当系统上具有较高版本的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资源文件的时候,安卓会忽略那些目前手机平台不支持的属性。所以你可以放心使用那些只有较新的版本才支持的XML属性,而不用担心旧版本遇到这些不识别的属性会崩溃。例如,你设置了targetSdkVersion=”11”,这样你的app运行在安卓3.0或更高的版本上时,默认是包含动作栏的。为了将某些菜单添加到动作栏上,你需要设置菜单选项的android:showAsAction=”ifRoom”。你可以安全地使用这个属性,因为旧版本的安卓只是简单地忽略这个showAsAction属性。(也就是说,你没有必要在res/menu-v11/下再创建一个菜单资源。)

使用平台风格和主题

安卓给用户提供了体验主题,这些主题使你的app保持和当前系统一样的外观风格。你可以在你的app配置文件里应用这些主题。通过使用内在的风格和主题,你的app将很容易地与每次新的更新版本保持一致的风格。

为了使你的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),将android:theme属性添加到<application>元素里:

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

更多主题相关的,请参考官方文档。