page.title=維持相容性 @jd:body
某些材料設計功能如材料設計風格和自訂操作行為轉換等,只能在 Android 5.0 (API 級別 21) 及以上版本中使用。 然而,您還是可以將應用程式設計為在支援材料設計的裝置上執行時才使用這些功能,並仍然與執行舊版 Android 的裝置相容。
您可以設定應用程式在支援材料設計風格的裝置上執行時才予以使用,在執行舊版 Android 的裝置上執行時則轉換成舊版的設計風格:
res/values/styles.xml
中定義繼承自舊版設計風格 (例如 Holo) 的設計風格。
res/values-v21/styles.xml
中定義與材料設計風格相同名稱的設計風格。
注意:若您的應用程式使用材料設計風格,但卻未以此方式提供替代設計風格,您的應用程式將無法在 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.xml
是 res/layout-v21/my_activity.xml
的替代版面配置。
為了避免程式碼重複,請在 res/values/
內定義您的樣式,在 res/values-v21/
中針對新的 API 修改樣式,再使用樣式繼承,在 res/values/
中定義基礎樣式,然後從 res/values-v21/
中的樣式繼承。
v7 支援程式庫 r21 以及更新版本包含下列材料設計功能:
Theme.AppCompat
設計風格時,某些系統小工具的材料設計樣式。
Theme.AppCompat
設計風格中的色板設計風格屬性。
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:minSdkVersion
和 android:targetSdkVersion
屬性。
如果要在 Android 5.0 中使用材料設計功能,請將 android:targetSdkVersion
屬性設定為 21
。
如需詳細資訊,請參閱 <uses-sdk> API 指南。