该文档翻译自 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 :
调色板(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 上使用,但会有这些限制:
依赖
要在 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 文档。