对不同平台版本的支持
Android系统版本不断的在更新,最新的版本可以提供更好的APIs,但是在更多的设备更新之前,仍然需要在app中对旧版本提供支持。
Google提供了一个仪表盘显示不同Android版本以及不同屏幕尺寸的设备的相对数量:dashboard
指定最低和目标API Level
AndroidManifest.xml文件描述了你的app细节并且确认该app支持的Android版本。特别是
例如:
...
当最新的Android版本发布时,一些样式和行为可能发生更改。为了允许你的app能够使用这些更改并确保你的app能够适配每个用户设备的样式,你应该将targetSdkVersion的值设置为可用的最新的Android版本。
在运行时检查系统版本
Android在Build常量类中为每个平台版本提供了一个唯一的code。在你的app中使用这些code构建条件语句来确保依赖于更高版本API的代码仅能在这些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资源的时候,Android会忽略掉当前设备不支持的XML属性。所以你可以安全的使用只被更新的版本支持的XML属性而不必担心旧版本遇到这些代码时会中断。举个例子,如果你设置targetSdkVersion=11,你的app包含Android 3.0以及更高版本默认的ActionBar。为了继续给action bar添加menu item,你需要在你的XML文件menu中设置android:showAsAction=”ifRoom”。在跨版本的XML文件中这样做是安全的,因为Android旧版本简单的忽略showAsAction这个属性(所以,你不需要在res/menu-v11/中有版本区分)。
使用平台样式和主题
Android提供用户体验主题,为应用程序提供底层操作系统的外观和感觉。这些主题可以通过manifest文件应用到你的app中。通过使用样式和主题的构建,你的app会自然的体现Android每个新版本的外观和感觉。
使你的activity看起来像一个对话框:
使你的activity有透明的背景:
应用你在/res/values/styles.xml中自定义的主题:
应用一个主题到你的整个app(所有的activity),添加android:theme属性到
更多关于主题构建和使用:Styles and Themes guide