Material Design 是一套用于跨平台和设备进行视觉、运动和交互设计的综合指南。要在 Android 应用中使用 Material Design,请遵循 Material Design 规范中定义的指导原则。如果您的应用使用 Jetpack Compose,可以使用 Compose Material 3 库。如果您的应用使用视图 (Views),可以使用 Android Material Components 库。
Android 提供以下功能来帮助您构建 Material Design 应用:
- 用于设置所有 UI 小部件样式的 Material Design 应用主题
- 用于复杂视图(例如列表和卡片)的小部件
- 用于自定义阴影和动画的 API
Material 主题和组件
若要利用 Material 特性(例如标准 UI 小部件的样式)并简化应用的样式定义,请为您的应用应用基于 Material 的主题。
如果您使用 Android Studio 创建 Android 项目,它会默认应用 Material 主题。要了解如何更新项目的样式,请参阅样式和主题。
为了给用户提供熟悉的操作体验,请使用 Material 最常见的 UX 模式:
- 使用悬浮操作按钮 (FAB) 突出显示 UI 的主要操作。
- 使用应用栏 (App bar) 展示您的品牌、导航、搜索及其他操作。
- 使用导航抽屉 (Navigation drawer) 显示和隐藏应用的导航。
- 您可以从众多其他 Material 组件中进行选择,以构建应用布局和导航,例如可折叠工具栏、标签页、底部导航栏等。要查看所有组件,请访问 Android Material 组件目录。
请尽可能使用预定义的 Material 图标。例如,导航抽屉的导航“菜单”按钮应使用标准的“汉堡”图标。请参阅 Material Design 图标以获取可用图标列表。您还可以通过 Android Studio 的 Vector Asset Studio 从 Material 图标库导入 SVG 图标。
高度阴影和卡片
除了 X 和 Y 属性外,Android 中的视图还有一个 Z 属性。该属性代表视图的高度 (Elevation),它决定了以下内容:
- 阴影的大小:Z 值越高的视图投射的阴影越大。
- 绘制顺序:Z 值越高的视图会显示在其他视图之上。
您可以将高度应用于基于卡片的布局,这有助于在卡片内显示重要信息,从而提供 Material 视觉外观。您可以使用 CardView 小部件来创建具有默认高度的卡片。有关详细信息,请参阅创建卡片布局。
有关向其他视图添加高度的信息,请参阅创建阴影和剪裁视图。
动画
动画 API 允许您为 UI 控件的触摸反馈、视图状态更改和 Activity 转换创建自定义动画。
这些 API 让您可以:
- 通过触摸反馈动画响应视图中的触摸事件。
- 通过圆形显示 (Circular reveal) 动画隐藏和显示视图。
- 通过自定义活动转换 (Activity transition) 动画在 Activity 之间切换。
- 通过曲线运动 (Curved motion) 创建更自然的动画。
- 通过视图状态更改动画为单个或多个视图属性的更改添加动画效果。
- 在视图状态发生变化时,通过状态列表可绘制对象 (State list drawables) 显示动画。
触摸反馈动画已内置于多种标准视图(如按钮)中。动画 API 允许您自定义这些动画并将其添加到您的自定义视图中。
有关详细信息,请参阅动画简介。
可绘制对象
这些可绘制对象功能可帮助您实现 Material Design 应用:
- 矢量可绘制对象具有可缩放性且不会丢失清晰度,非常适合用于应用内的单色图标。详细了解矢量可绘制对象。
- 可绘制对象着色允许您将位图定义为 Alpha 遮罩,并在运行时为其着色。请参阅如何为可绘制对象添加色调。
- 颜色提取允许您自动从位图图像中提取突出的颜色。请参阅如何使用 Palette API 选择颜色。