該文檔翻譯自 Android 5.0 文檔中對 Material Design 的介紹,原文位址:http://developer.android.com/training/material/compatibility.html
有些 Material Design 的特性像是 Material 主題和自定義 Activity 過渡隻在 Android 5.0(API level 21)及以上可用。然而,你可以配置你的應用,使其在支援 Material Design 的裝置上運作時可以使用這些特性,同時在之前釋出的 Android 版本上運作時仍然可以相容運作。
定義備選樣式
你可以設定你的應用在支援 Material Design 的裝置上使用 Material 主題 ,并且在運作早期版本的 Android 的裝置上恢複為舊的主題:
- 在 res/values/styles.xml 中定義一個主題,該主題繼承了一個舊主題(如 Holo)。
- 在 res/values-v21/styles.xml 中使用相同的名字定義一個主題,繼承 Material 主題。
- 在 manifest 檔案中設定該主題為你應用的主題。
注意:如果你的應用使用了Material主題但是沒有用上面的方式提供備選樣式,你的應用将不能在Android5.0之前的版本上運作。
提供備選布局
如果你根據 Material Design 指導設計的布局,沒有使用任何在 Android 5.0(API level 21)中引進的新的 XML 屬性,那麼它們可以在 Android 之前的版本中工作。否則,你需要提供備選布局。你還可以提供備選布局來定制你的應用在之前版本的 Android 上的外觀。
在 res/layout-v21/中建立為 Android 5.0(API level 21) 版本所使用的布局檔案,并在 res/layout/ 中建立為早期 Android 版本所使用的替代布局。例如,res/layout/my_activity.xml 是res/layout-v21/my_activity.xml 的替代布局。
要避免重複的代碼,請在 res/values/中定義你的基礎樣式,在res/values-v21/ 中繼承這些基礎樣式,并使用新 API 在 res/values-v21/中修改繼承後的樣式。
使用支援庫
v7 Support Libraries21 版本及以上包含了以下 Material Design 特性:
- 當你應用了 Theme.AppCompat 主題的其中一個後會為一些系統元件應用Material design styles。
- Theme.AppCompat 主題中的 Color palette(調色闆)主題屬性。
- 用 RecyclerView 元件來顯示資料集合。
- 用 CardView 元件來建立卡片。
- 用 Palette 類來從圖檔中提取顯著色彩。
系統元件
Theme.AppCompat 主題為這些元件提供了 Material Design :
- EditText
- Spinner
- CheckBox
- RadioButton
- SwitchCompat
- CheckedTextView
調色闆(color palette)
要使用 Android V7 Support Libraray 擷取 Material Design 樣式并自定義調色闆,使用Theme.AppCompat 主題中的一個:
<!-- 繼承 Theme.AppCompat 主題中的一個 -->
<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>
清單和卡片
RecyclerView和 CardView 元件可以通過 Android v7 Support Library 在低版本 Android 上使用,但會有這些限制:
- CardView倒退到一個使用額外填充來達到程式設計陰影效果的實作版本。
- CardView不再剪切與圓角相交的子視圖。
依賴
要在 Android 5.0(API level 21)版本之前使用這些特性,在你的項目中把 Android v7 Support Library 作為一個 Gradle 依賴包含進來:
dependencies {
compile 'com.android.support:appcompat-v7:+'
compile 'com.android.support:cardview-v7:+'
compile 'com.android.support:recyclerview-v7:+'
}
檢查系統版本
下面的特性隻能在 Android 5.0 (API level 21)及以上使用:
- Activity 過渡
- 觸摸回報
- 波紋動畫
- 基于路勁的動畫
- 矢量圖像
- 圖像染色
要在之前的 Android 版本保持相容性,在你調用上面這些特性的 API 之前都需要在 runtime 檢查系統版本:
// 檢查我們是否運作在 Android 5.0 或更高版本上
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
// 在這裡調用一些 Material Design API
} else {
// 不使用 Material Design 實作這些功能
}
注意:要為你的 Android 應用指定支援的版本,在你的 manifest 檔案中使用 android:minSdkVersion 和android:targetSdkVersion 屬性。要在 Android 5.0上使用 Material Design 特性,設定android:targetSdkVersion 屬性為 21.更多資訊,請檢視 <uses-sdk> API 文檔。