page.title=維持相容性 @jd:body

本課程示範

  1. 定義替代樣式
  2. 提供替代版面配置
  3. 使用支援程式庫
  4. 檢查系統版本

您也應該閱讀

某些材料設計功能如材料設計風格和自訂操作行為轉換等,只能在 Android 5.0 (API 級別 21) 及以上版本中使用。 然而,您還是可以將應用程式設計為在支援材料設計的裝置上執行時才使用這些功能,並仍然與執行舊版 Android 的裝置相容。

定義替代樣式

您可以設定應用程式在支援材料設計風格的裝置上執行時才予以使用,在執行舊版 Android 的裝置上執行時則轉換成舊版的設計風格:

  1. res/values/styles.xml 中定義繼承自舊版設計風格 (例如 Holo) 的設計風格。
  2. res/values-v21/styles.xml 中定義與材料設計風格相同名稱的設計風格。
  3. 在宣示說明檔案中將此設計風格設定為應用程式的設計風格。

注意:若您的應用程式使用材料設計風格,但卻未以此方式提供替代設計風格,您的應用程式將無法在 Android 5.0 之前的版本上執行。

提供替代版面配置

若您根據材料設計指南所設計的版面配置並未使用任何 Android 5.0 (API 級別 21) 中推出的全新 XML 屬性,則這些版面配置就可以在舊版 Android 上運作。 或者,您也可以提供替代的版面配置。您也可提供替代的版面配置以自訂應用程式在舊版 Android 上如何顯示。

res/layout-v21/ 內建立 Android 5.0 (API 級別 21) 的版面配置檔案,並在 res/layout/ 內建立舊版 Android 的替代版面配置檔案。例如,res/layout/my_activity.xmlres/layout-v21/my_activity.xml 的替代版面配置。

為了避免程式碼重複,請在 res/values/ 內定義您的樣式,在 res/values-v21/ 中針對新的 API 修改樣式,再使用樣式繼承,在 res/values/ 中定義基礎樣式,然後從 res/values-v21/ 中的樣式繼承。

使用支援程式庫

v7 支援程式庫 r21 以及更新版本包含下列材料設計功能:

系統小工具

Theme.AppCompat 設計風格提供下列小工具的材料設計樣式:

色板

如果要取得材料設計樣式並使用 Android v7 支援程式庫自訂色板,請套用其中一個 Theme.AppCompat 設計風格:

<!-- extend one of the Theme.AppCompat themes -->
<style name="Theme.MyTheme" parent="Theme.AppCompat.Light">
    <!-- customize the color palette -->
    <item name="colorPrimary">@color/material_blue_500</item>
    <item name="colorPrimaryDark">@color/material_blue_700</item>
    <item name="colorAccent">@color/material_green_A200</item>
</style>

清單和卡片

在舊版 Android 中,透過 Android v7 支援程式庫可以使用 {@link android.support.v7.widget.RecyclerView} 和 {@link android.support.v7.widget.CardView} 小工具,但有下列限制:

相依性

如果要在 Android 5.0 (API 級別 21) 以前的版本中使用這些功能,請在您的專案中包含 Android v7 支援程式庫做為 Gradle 相依性

dependencies {
    compile 'com.android.support:appcompat-v7:21.0.+'
    compile 'com.android.support:cardview-v7:21.0.+'
    compile 'com.android.support:recyclerview-v7:21.0.+'
}

檢查系統版本

下列功能只能在 Android 5.0 (API 級別 21) 以及更新版本中使用:

如要維持與舊版 Android 的相容性,在呼叫這些功能的 API 之前,請先在執行期間檢查系統 {@link android.os.Build.VERSION#SDK_INT version}:

// Check if we're running on Android 5.0 or higher
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    // Call some material design APIs here
} else {
    // Implement this feature without material design
}

注意:如果要指定應用程式支援的 Android 版本,請在您的宣示說明檔案中使用 android:minSdkVersionandroid:targetSdkVersion 屬性。 如果要在 Android 5.0 中使用材料設計功能,請將 android:targetSdkVersion 屬性設定為 21。 如需詳細資訊,請參閱 <uses-sdk> API 指南