大部分时候我们需要支持不同的Android平台版本,但是某些特性在低版本的系统上不存在,那么我们就需求根据当前的版本做动态处理,一般来说,我们可以引入支持包来实现我们的功能。
<manifest xmlns:android="http://schemas.android.com/apk/res/android" ... >
<uses-sdk android:minSdkVersion="4" android:targetSdkVersion="15" />
...
</manifest>
在上面的例子中,minSdkVersion表示当前应用最低能安装到的系统版本,targetSdkVersion表示软件开发和调试的最适合版本,假设minSdkVersion=4,targetSdkVersion=22。那么我们不能安装到系统版本为3的系统上,如果安装的系统是[4,21)时,那么说明系统不能很好或者很完全地展示我们的软件特性,但是我们也需要使用支持包实现对应的功能,(支持包能够针对特定版本调用不同的api)。如果系统是22,那么软件运行最优,如果系统是23,那么我们软件也不会应用23的新特性。
虽然大部分时候我们使用支持包可以实现不同版本的兼容性,但是我们有时候也需要自己判断当前版本。
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);
}
}
上面的例子中,Build.VERSION.SDK_INT 表示,系统的sdk版本。
不同的是,我们在编辑xml属性时,不需要进行版本判断,因为较旧的系统会忽视那些新的xml属性。
我们可以通过设置主题theme来让App跟随系统版本而有不同的展示。
To make your activity look like a dialog box:
<activity android:theme="@android:style/Theme.Dialog">
To make your activity have a transparent background:
<activity android:theme="@android:style/Theme.Translucent">
To apply your own custom theme defined in /res/values/styles.xml
:
<activity android:theme="@style/CustomTheme">
To apply a theme to your entire app (all activities), add the android:theme
attribute to the [<application>
](https://developer.android.google.cn/guide/topics/manifest/application-element.html) element:
<application android:theme="@style/CustomTheme">