天天看點

android是适配不同版本适配不同的系統版本

适配不同的系統版本

新的Android版本會為你的app提供更棒的APIs,但你的app仍應該支援舊版本的Android,直到更多的裝置更新到新版本為止。這節課程向你展示如何在利用新的APIs的同時仍支援舊版本Android。

Platform Versions的控制台會定時更新,通過統計通路Google Play Store的裝置數量,來顯示運作每個版本的安卓裝置的分布。一般情況下,在更新你的app至最新Android版本時,最好先保證你的新版app可以支援90%的裝置使用。

為了能在幾個Android版本中都能提供最好的特性和功能,你應該在你的app中使用Android Support Library,它能使你的app能在舊平台上使用最近的幾個平台的APIs。

指定最小和目标API級别

AndroidManifest.xml 檔案中描述了你的app的細節,并且标明app支援哪些Android版本。具體來說,

<uses-sdk>

元素中的

minSdkVersion

targetSdkVersion

 屬性,标明在設計和測試app時,最低相容API的級别和最高适用的API級别(這個最高的級别是需要通過你的測試的)。例如:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" ... >
    <uses-sdk android:minSdkVersion="4" android:targetSdkVersion="15" />
    ...
</manifest>
           

随着新版本Android的釋出,一些風格和行為可能會改變,為了能使你的app能利用這些變化,而且能适配不同風格的使用者的裝置,你應該設定

targetSdkVersion

的值去比對最新的可用Android版本。

在運作時檢查系統版本

Android在Build常量類中提供了對每一個版本的唯一代号,在你的app中使用這些代号可以建立條件,保證依賴于進階别的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);
    }
}
           
Note:當解析XML資源時,Android會忽略目前裝置不支援的XML屬性。是以你可以安全地使用較新版本的XML屬性,而不需要擔心舊版本Android遇到這些代碼時會崩潰。例如如果你設定

targetSdkVersion="11"

,你的app會在Android 3.0或更高時預設包含ActionBar。然後添加menu items到action bar時,你需要在你的menu XML資源中設定

android:showAsAction="ifRoom"

。在跨版本的XML檔案中這麼做是安全的,因為舊版本的Android會簡單地忽略

showAsAction

屬性(就是這樣,你并不需要用到

res/menu-v11/

中單獨版本的檔案)。

使用平台風格和主題

Android提供了使用者體驗主題,為app提供基礎作業系統的外觀和體驗。這些主題可以在manifest檔案中被應用于你的app中.通過使用内置的風格和主題,你的app自然地随着Android新版本的釋出,自動适配最新的外觀和體驗.

使你的activity看起來像對話框:

使你的activity有一個透明背景:

應用在

/res/values/styles.xml

中定義的自定義主題:

使整個app應用一個主題(全部activities)在元素中添加

android:theme

屬性:

以上資訊來自Android官方;