雖然最新版的 Android 常能為應用程式提供卓越的 API,但應繼續支援舊版 Android,直到更多裝置完成更新為止。本課程將說明如何使用最新的 API,同時繼續支援舊版。
使用 Android Studio「New Project」精靈找出執行各 Android 版本的有效裝置分佈情形。這個分佈方式根據造訪 Google Play 商店的裝置數量來計算。一般來說,我們建議支援約 90% 使用中裝置,同時指定應用程式為最新版本。
提示:如要在多個 Android 版本之間提供最佳功能,請使用應用程式的 Android 支援資料庫,以便在較舊版本中使用數個最新平台的 API。
指定最低和目標 API 級別
AndroidManifest.xml 檔案會描述應用程式的詳細資料,並指出應用程式支援的 Android 版本。具體來說,<uses-sdk>
元素的 minSdkVersion
和 targetSdkVersion
屬性可識別應用程式相容的最低 API 級別,以及應用程式相容性和您設計且已測試過的最高 API 等級。
例如:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" ... > <uses-sdk android:minSdkVersion="4" android:targetSdkVersion="15" /> ... </manifest>
隨著新版本的 Android 推出,某些樣式和行為可能會有所變動。
為了讓應用程式能夠利用這些異動,並確保應用程式符合每位使用者的裝置樣式,請設定 targetSdkVersion
值以符合最新的 Android 版本。
在執行階段檢查系統版本
Android 會為 Build
常數類別中的每個平台版本提供專屬代碼。在應用程式中使用這些程式碼建構條件,確保只有在這些 API 系統可用時,才會執行需要較高 API 級別的程式碼。
Kotlin
private fun setUpActionBar() { // Make sure we're running on Honeycomb or higher to use ActionBar APIs if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { actionBar.setDisplayHomeAsUpEnabled(true) } }
Java
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"
,您的應用程式就會在 Android 3.0 或以上版本中預設包含 ActionBar
。如要將選單項目新增至動作列,您必須在選單資源 XML 中設定 android:showAsAction="ifRoom"
。使用跨版本 XML 檔案即可避免這種情況,因為舊版 Android 會忽略 showAsAction
屬性 (也就是說,您「不需要」 獨立版本的 res/menu-v11/
)。
使用平台樣式和主題
Android 提供使用者體驗主題,能讓應用程式提供作業系統的外觀和風格。這些主題可套用至資訊清單檔案中的應用程式。只要使用這些內建樣式和主題,您的應用程式在發布新版本時自然就會獲得 Android 的最新外觀和風格。
為了讓活動看起來像對話方塊:
<activity android:theme="@android:style/Theme.Dialog">
為了讓活動呈現透明背景:
<activity android:theme="@android:style/Theme.Translucent">
如何套用在 /res/values/styles.xml
中定義的自訂主題:
<activity android:theme="@style/CustomTheme">
如要為整個應用程式 (所有活動) 套用主題,請在 <application>
元素中加入 android:theme
屬性:
<application android:theme="@style/CustomTheme">
如要進一步瞭解如何建立及使用主題,請參閱「樣式和主題」指南。