Supporting Different Platform Versions(支持不同的版本)
由于Android的新版本经常会提供大量的API,所以你应该同时支持旧版本直到更多的设备更新到新的版本。这篇文章就是讲如何在支持旧版本的基础上来使用新的APIS开发你自己的APK.
Google是通过Google play Store来统计设备Android 版本的使用比例和分布情况的。一般来讲,需要你的APP 支持大概90%的设备。
建议:为了在不同的Android版本中提供最好的功能和特性,在APP中应该使用Android Support Library.通过这个库,你可以在旧版本中使用新版本的APIS.
指定最小和目标API 级别
AndroidManifest.xml文件详细描述了你的APP能够识别和支持的Android版本。该文件中,<uses-sdk>元素的minSdkVersion
和targetSdkVersion
属性指定了你的APP
能够能兼容的最低API 级别和你设计以及测试APP的最高API级别。
例如:
<manifest
xmlns:android="http://schemas.android.com/apk/res/android" ... >
<uses-sdk android:minSdkVersion="4"
android:targetSdkVersion="15" />
...
</manifest>
新的Android 版本发布以后,一些设计风格和行为可能会改变。为了允许你的APP利用这些改变并确保它能够适合每个用户设备的风格,你应该尽可能的设置targetSdkVersion为最新的Android版本。
在运行时核查系统的版本
在Build常量类中,Android为每个平台的版本提供了一个识别码。在APP中使用这个识别码是为了确保系统能获得高版本APIS的时候,依赖于高版本APIS的代码才会执行。
例如:
Private void setUpActionBar()
{
//确保目前运行的版本至少是Honeycomb才使用ActionBar APIS
If(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB)
{
ActionBar actionBar = getActionBar ();
actionBar.setDisplayHomeAsUpEnabled (true);
}
}
注意:在解析XML资源时, Android 会忽略当前设备部支持的XML属性。所以在设计XML文件的时候你不必担心因为旧版本不支持而打断这个解析过程,你可以放心的使用只有新版本才支持的XML属性。例如如果你设置targetSdkVersion="11"
,并且你的APP包含了Android 3.0或者更高才能支持的ActionBar.为了添加菜单项到ActionBar,你必须在菜单XML文件中设置android:showAsAction="ifRoom"。这种跨版本设计XML的做法是安全的,因为Android 旧版本会忽视showAsAction属性(所以你不需要单独建立一个res/menu-v11文件夹来定义这个menu菜单)。
使用平台风格和主题(Use Platform Styles and Themes)
Android 提供了一个用户体验主题,通过这个主题,APP 能够 look and feel 到潜在的的操作系统。这些主题可以通过manifest 文件应用到你的APP.通过这些内嵌的风格和主题,你的APP能够自然地follow the latest look and feel of Android with each new release.
让你的活动像一个对话框一样显示:
<activityandroid:theme="@android:style/Theme.Dialog">
让你的活动背景透明:
<activityandroid:theme="@android:style/Theme.Translucent">
应用自己定义的主题,客制化的主题定义在:/res/values/styles.xml
<activityandroid:theme="@style/CustomTheme">
将一个主题应用到整个的APP中:
<applicationandroid:theme="@style/CustomTheme">