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">