当最新发布的android平台为你的应用提供非常棒的api的同时,你也应该确保你的应用能够在那些依然使用着旧版本的android设备上正常运行,直到这些用户更换新手机为止。这节课,我们将教你如何将最新的api使用到旧版本上。
根据设备访问谷歌商店的统计表格的定期更新上可以看到,每个设备运行的版本以及它们的分布。一般来说一个优秀的app需要支持将近90%的安卓设备。
提示:为了能够在各个版本的android设备上提供可靠的性能,开发者必须在其自己的app中添加 Android Support Library。
1、Specify Minimum and Target API Levels(指定最小以及目标api等级)
在AndroidManifest.xml文件中具体描述了开发者的app的支持版本
<manifestxmlns:android="http://schemas.android.com/apk/res/android" ... >
<uses-sdkandroid:minSdkVersion="4"android:targetSdkVersion="15"/>
...
</manifest>
2、Check System Version at Runtime(在运行时检查系统版本)
android在编译class时会为每个版本的平台提供一个独一无二的代码,使用这些代码可以确保高等级的api只能运行在高等级的版本中。
privatevoid 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);
}
}
注意 :android在解析xml资源的时候会忽略xml属性是否能够被当前设备版本所支持。因此你可以放心的使用这些只在最新的版本中才支持的xml属性而不必担心其会出错。例如,你设置了targetSdkVersion=‘11’,你的app包含了ActionBar这类默认在android 3.0或更高版本。你只需要设置android:showAsAction="ifRoom"
showAsAction,而不必将xml分割成各个版本类似于 res/menu-v11/
3、
Use Platform Styles and Themes(使用平台自带的样式和主题)
android提供了可以用户自己定制的主题。这类主题需要在清单文件中添加。
让你的activity看起来像一个对话框。
<activityandroid:theme="@android:style/Theme.Dialog">
确保你的activity有个透明的背景。
<activityandroid:theme="@android:style/Theme.Translucent">
将你的自定义theme定义在
/res/values/styles.xml
:
<activityandroid:theme="@style/CustomTheme">
将你的自定义theme应用到整个app,添加
android:theme
<applicationandroid:theme="@style/CustomTheme">