维护兼容性

有些 Material Design 功能(例如材料主题和定制操作行为转换)仅在 Android 5.0(API 级别 21)及更高版本中提供。 不过,您可为您的应用进行设计,使应用在支持 Material Design 的设备上运行时可使用这些功能,且同时能够与运行早期版本 Android 的设备兼容。

定义备用样式


您可对您的应用进行配置,使应用能够在支持它的设备上使用材料主题,并且能够在运行早期版本 Android 的设备上还原至早期版本的主题:

  1. 定义一个从 res/values/styles.xml 中的早期版本主题(例如 Holo)继承的主题。
  2. 定义一个从 res/values-v21/styles.xml 中的材料主题继承且拥有相同名称的主题。
  3. 在清单文件中将此主题设置为您的应用主题。

注意:如果您的应用使用材料主题,但没有以这方式提供备用主题,您的应用将无法在 Android 5.0 之前的 Android 版本上运行。

提供备用布局


如果您根据 Material Design 指导方针设计的布局没有使用 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 及更高版本包括下列 Material Design 功能:

系统小组件

Theme.AppCompat 主题可为这些小组件提供 Material Design 风格:

配色工具

如果要利用 Android v7 支持内容库取得 Material Design 风格以及定制配色工具,请应用其中一个 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>

列表和卡片

RecyclerView 以及 CardView 小组件可通过 Android v7 支持内容库提供给早期版本 Android,但有如下限制:

  • CardView 使用额外边距返回编程阴影实现。
  • CardView 不会裁剪其与圆角相交的子视图。

依赖项

如果要在 Android 5.0(API 级别 21)之前的 Android 版本中使用这些功能,请将 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 的兼容性,请您在运行时检查系统 version,然后再为下列的任何一个功能调用 API:

// 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 内使用 Material Design 功能,请将 android:targetSdkVersion属性设置为 21。 如果要了解更多信息,请参阅 <uses-sdk> API 指南

分类面向开发者的 Material Design相关推荐:

面向开发者的 Material Design 入门指南 使用材料主题 创建列表与卡片 定义阴影与裁剪视图 使用图片 定义定制动画 维护兼容性