一、基本介绍
根据官方的说法,Material Design是谷歌为了统一多个平台的视觉、运动与互动效果而制定的的综合指南。要求Android 5.0(API 21)以上。
Android提供了以下元素来构建Material Design来构建应用:
- 全新的风格主题
- 用于设计复杂视图的全新小工具
- 用于自定义阴影和动画的全新API
二、基本使用
1.官方的使用指南:
- 查阅Material Design规范
- 在应用中使用材料主题
- 遵循Material Design指导方针创建布局
- 指定视图要投射的阴影的高度
- 使用系统小组件呈现列表与卡片
- 定制应用中的动画
2.兼容性
由于有些Material Design功能仅在Android 5.0之后支持,所以需要保持设备的兼容性。
2.1 定义备用样式
- 定义一个从res/values/styles.xml中的早期版本主题(例如Holo)继承的主题
- 定义一个从res/values-v21/styles.xml中的材料主题继承的同名的主题
- 在清单文件中将此主题设置为应用的主题
注意:如果应用使用材料主题,但是没有提供备用主题,那么在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内容支持库及更高版本支持以下功能:
- 应用其中一个 Theme.AppCompat 主题时可取得适用于一些系统小组件的Material Design 风格。
- Theme.AppCompat 主题中拥有配色工具主题属性。
- 显示数据集合的 RecyclerView 小组件。
- 创建卡片的 CardView 小组件。
- 从图像萃取突出颜色的 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()
方法进行动画或淡出设置。
定制导航栏和状态栏时,您可选择将导航栏和状态栏变透明或仅修改状态栏。 在所有其他情况中,导航栏均应保持黑色