一、基本介绍

根据官方的说法,Material Design是谷歌为了统一多个平台的视觉、运动与互动效果而制定的的综合指南。要求Android 5.0(API 21)以上。

Android提供了以下元素来构建Material Design来构建应用:

  • 全新的风格主题
  • 用于设计复杂视图的全新小工具
  • 用于自定义阴影和动画的全新API

二、基本使用

1.官方的使用指南:
  1. 查阅Material Design规范
  2. 在应用中使用材料主题
  3. 遵循Material Design指导方针创建布局
  4. 指定视图要投射的阴影的高度
  5. 使用系统小组件呈现列表与卡片
  6. 定制应用中的动画
2.兼容性

由于有些Material Design功能仅在Android 5.0之后支持,所以需要保持设备的兼容性。

2.1 定义备用样式

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

注意:如果应用使用材料主题,但是没有提供备用主题,那么在Android 5.0之前的设备上将不能运行。

2.2 提供备用布局

如果使用了Android 5.0(API 21)以后提供的xml属性,并且应用需要在旧版本的设备上运行,那就需要提供备用布局。

在res/layout-v21内创建用于API 21的布局文件,同时在res/layout中创建用于早期版本的备用布局文件。例如,res/layout/my_activity.xml 是 res/layout-v21/my_activity.xml 的备用布局。

为了避免代码重复,在res/values中定义风格,在res/values-v21中为新API修改风格,以及使用风格继承(即:在 res/values/ 内定义基础风格,然后在 res/values-v21/ 内继承这些风格)

2.3 使用支持库

v7内容支持库及更高版本支持以下功能:

  1. 应用其中一个 Theme.AppCompat 主题时可取得适用于一些系统小组件的Material Design 风格
  2. Theme.AppCompat 主题中拥有配色工具主题属性
  3. 显示数据集合的 RecyclerView 小组件。
  4. 创建卡片的 CardView 小组件。
  5. 从图像萃取突出颜色的 Palette 类别。
2.4 系统小组件

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

  • EditText
  • Spinner
  • CheckBox
  • RadioButton
  • SwitchCompat
  • CheckedTextView
2.5 配色工具

如果要利用 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>
2.6 检查系统版本

下列功能仅在 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:style/Theme.Material(深色版本)
  • @android:style/Theme.Material.Light(浅色版本)
  • @android:style/Theme.Material.Light.DarkActionBar
3.1 定制配色工具

如果要定制主题的基色以符合您的品牌,您可在进行材料主题继承时使用主题属性定义您的定制颜色:

<resources>
  <!-- inherit from the material theme -->
  <style name="AppTheme" parent="android:Theme.Material">
    <!-- Main theme colors -->
    <!--   your app branding color for the app bar -->
    <item name="android:colorPrimary">@color/primary</item>
    <!--   darker variant for the status bar and contextual app bars -->
    <item name="android:colorPrimaryDark">@color/primary_dark</item>
    <!--   theme UI controls like checkboxes and text fields -->
    <item name="android:colorAccent">@color/accent</item>
  </style>
</resources>
3.2 定制状态栏

如果要为状态栏设置定制颜色,您可在扩展材料主题时使用 android:statusBarColor 属性。 默认情况下,android:statusBarColor 将继承 android:colorPrimaryDark 的值。

也可自行将状态栏移到后侧。例如,您想在一个照片上以透明的方式显示状态栏,同时利用细微的深色渐变以确保白色状态图标仍保持可见。 如果要执行此操作,请将 android:statusBarColor 属性设置为 @android:color/transparent并根据需要调整窗口标志。您也可以使用Window.setStatusBarColor() 方法进行动画或淡出设置。

定制导航栏和状态栏时,您可选择将导航栏和状态栏变透明或仅修改状态栏。 在所有其他情况中,导航栏均应保持黑色

Material Components for Android使用案例 android material design 2.0_Android