Google Material Design 3 实战参考。涵盖 Material You 动态色彩、排版系统、组件规格、Shape 系统、Motion 规范、Dark Theme 适配和 Jetpack Compose/Flutter 对照。适用于 Android 应用、Web 应用和跨平台应用的 UI 设计决策。
Google 材料设计 3 QQ Matrial Design 3(Matrial You) QQ, {Android ++ UI →(Jetpack Comp
功能概述
Google 材料设计 3 QQ Matrial Design 3(Matrial You) QQ, {Android ++ UI →(Jetpack Comp是一项面向实际任务的技能,主要用于Flutter QQWeb 材料 QQ(MUI / Angular material) QQQ。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
核心要点
- 使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。
- 从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。
- 实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;
使用与执行
若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;
结果检查与注意事项
涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。
Google Material Design 3 实战参考
Material Design 3(Material You)的实战速查,覆盖色彩、排版、组件和动效。
适用场景
- Android 应用 UI 设计(Jetpack Compose / XML Views)
- Flutter 跨平台应用
- Web 应用使用 Material 组件库(MUI / Angular Material)
- 审计现有 UI 是否符合 Material 3 规范
不适用
- macOS / iOS 原生应用(参考 apple-hig)
- Windows 原生应用(参考 fluent-design)
1. 核心设计原则
Material 3 的三大支柱:
| 原则 | 含义 | 实践 |
|---|---|---|
| Personal(个性化) | 适应用户偏好 | Dynamic Color 从壁纸取色 |
| Adaptive(自适应) | 适应各种设备 | 响应式布局、折叠屏支持 |
| Expressive(表达力) | 丰富的视觉表达 | 大圆角、色彩层次、motion |
与 Apple HIG / Fluent 的区别
Apple: 做减法,克制,内容优先 Fluent: 融入环境(Mica/Acrylic),层次丰富 Material: 做加法,表达力强,色彩大胆,圆角更大
2. 色彩系统(Dynamic Color)
Material 3 色彩方案
M3 使用 色调调色板(Tonal Palette) 生成完整配色:
Source Color(种子色) → Primary Palette(主色调 13 级) → Secondary Palette(辅色调 13 级) → Tertiary Palette(第三色调 13 级) → Neutral Palette(中性色 13 级) → Neutral Variant Palette(中性变体 13 级) → Error Palette(错误色 13 级)
关键色槽(Key Color Roles)
| 角色 | Light | Dark | 用途 |
|---|---|---|---|
| Primary | Tone 40 | Tone 80 | 主要交互元素(FAB、按钮) |
| On Primary | Tone 100 | Tone 20 | Primary 上的文字/图标 |
| Primary Container | Tone 90 | Tone 30 | 次要强调容器 |
| On Primary Container | Tone 10 | Tone 90 | 容器上的内容 |
| Secondary | Tone 40 | Tone 80 | 次要交互元素 |
| Tertiary | Tone 40 | Tone 80 | 对比/强调 |
| Surface | Tone 99 | Tone 6 | 页面主背景 |
| Surface Variant | Tone 90 | Tone 30 | 卡片/区块背景 |
| On Surface | Tone 10 | Tone 90 | 主文字 |
| On Surface Variant | Tone 30 | Tone 80 | 辅助文字 |
| Outline | Tone 50 | Tone 60 | 边框 |
| Outline Variant | Tone 80 | Tone 30 | 弱边框/分隔线 |
| Error | #B3261E |
#F2B8B5 |
错误状态 |
| Background | Tone 99 | Tone 6 | 窗口背景 |
Dynamic Color(Material You)
Android 12+ 支持从壁纸自动提取 Source Color:
// Jetpack Compose
val colorScheme = if (dynamicColor && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
dynamicLightColorScheme(context) // 或 dynamicDarkColorScheme
} else {
lightColorScheme(primary = Purple40, ...)
}
手动生成配色
使用 Google 官方工具:
- Material Theme Builder: https://m3.material.io/theme-builder
- 输入一个 Source Color → 自动生成完整 Light/Dark 方案
- 导出为 Compose / CSS / Figma Token
3. 排版
字体栈
Android: Roboto(系统默认) Web: 'Roboto', system-ui, sans-serif iOS: SF Pro(Flutter 自动适配)
Type Scale
| 角色 | 字号 | 字重 | 行高 | 间距 | 用途 |
|---|---|---|---|---|---|
| Display Large | 57px | Regular | 64px | -0.25px | 极大数字/英雄标题 |
| Display Medium | 45px | Regular | 52px | 0 | 大标题 |
| Display Small | 36px | Regular | 44px | 0 | 次大标题 |
| Headline Large | 32px | Regular | 40px | 0 | 页面标题 |
| Headline Medium | 28px | Regular | 36px | 0 | 区块标题 |
| Headline Small | 24px | Regular | 32px | 0 | 卡片标题 |
| Title Large | 22px | Regular | 28px | 0 | Top App Bar 标题 |
| Title Medium | 16px | Medium | 24px | 0.15px | Tab / Navigation 标签 |
| Title Small | 14px | Medium | 20px | 0.1px | 小标题 |
| Body Large | 16px | Regular | 24px | 0.5px | 默认正文 |
| Body Medium | 14px | Regular | 20px | 0.25px | 次要正文 |
| Body Small | 12px | Regular | 16px | 0.4px | 辅助文字 |
| Label Large | 14px | Medium | 20px | 0.1px | 按钮文字 |
| Label Medium | 12px | Medium | 16px | 0.5px | Badge |
| Label Small | 11px | Medium | 16px | 0.5px | 时间戳 |
与其他平台对比
Material Body Large = 16px → Apple Body = 13px (macOS) / 17px (iOS) Material 偏大偏宽松,Apple 偏紧凑 Material 大量用 Medium 字重,Apple 偏 Regular
4. 组件规格
按钮
| 类型 | 高度 | 圆角 | 用途 |
|---|---|---|---|
| Filled | 40px | 20px(全圆角) | 主要操作 |
| Outlined | 40px | 20px | 次要操作 |
| Text | 40px | 20px | 低优先级操作 |
| Tonal | 40px | 20px | 介于 Filled 和 Outlined 之间 |
| FAB (Mini) | 40px | 12px | 次要浮动操作 |
| FAB | 56px | 16px | 主要浮动操作 |
| Extended FAB | 56px | 16px | 带文字的 FAB |
| Icon Button | 40×40px | 20px | 图标操作 |
输入
| 控件 | 高度 | 圆角 | 特征 |
|---|---|---|---|
| Text Field (Filled) | 56px | 顶部 4px | 底部下划线 |
| Text Field (Outlined) | 56px | 4px | 四周边框 |
| Checkbox | 18×18px | 2px | — |
| Radio | 20×20px | 50% | — |
| Switch | 32×52px | 16px | 大尺寸拨动 |
| Slider | 4px 轨道 | 2px | 圆形 thumb 20px |
容器
| 组件 | 圆角 | 阴影 |
|---|---|---|
| Card (Filled) | 12px | 无(底色区分) |
| Card (Elevated) | 12px | elevation 1 |
| Card (Outlined) | 12px | 无(边框区分) |
| Dialog | 28px | elevation 3 |
| Bottom Sheet | 28px (顶部) | elevation 1 |
| Chip | 8px | — |
| Navigation Bar | 0 | elevation 2 |
触控目标
最小触控目标:48×48dp 推荐触控目标:56×56dp(FAB) 间距:至少 8dp
5. Shape 系统
M3 的圆角规则(使用 dp):
| Shape 级别 | 圆角值 | 适用组件 |
|---|---|---|
| None | 0dp | — |
| Extra Small | 4dp | Text Field, Menu |
| Small | 8dp | Chip, Snackbar |
| Medium | 12dp | Card, Search Bar |
| Large | 16dp | FAB, Navigation Drawer |
| Extra Large | 28dp | Dialog, Bottom Sheet |
| Full | 50%(圆形) | FAB Mini, Icon Button |
与其他平台对比
Material: 大圆角风格(Dialog 28dp, Button 20dp) Apple: 中等圆角(Dialog ~12px, Button 5-7px) Fluent: 小圆角(Dialog 8px, Button 4px)
Material 3 的圆角是三者中最大的,视觉上最柔和、最有表达力。
6. Elevation(海拔系统)
M3 使用 Surface Tint 而非纯阴影来表达层次:
| Level | Tint Opacity | 阴影 | 用途 |
|---|---|---|---|
| 0 | 0% | 无 | Surface 基础 |
| 1 | 5% | 微弱 | Card, Navigation Bar |
| 2 | 8% | 轻微 | Elevated Card |
| 3 | 11% | 中等 | FAB, Snackbar |
| 4 | 12% | — | 较少使用 |
| 5 | 14% | 明显 | Navigation Drawer |
Surface Tint 实现
/* 用 Primary 色做 overlay,opacity 按 level 递增 */
.elevation-1 {
background: linear-gradient(
rgba(var(--md-primary-rgb), 0.05),
rgba(var(--md-primary-rgb), 0.05)
), var(--md-surface);
}
Dark 模式下 Surface Tint 更重要——阴影在深色背景上几乎不可见,用 tint 区分层次。
7. Motion(动效系统)
Duration
| 类型 | 时长 | 用途 |
|---|---|---|
| Short 1 | 50ms | 选中/取消选中 |
| Short 2 | 100ms | 简单状态切换 |
| Short 3 | 150ms | 小组件出现 |
| Short 4 | 200ms | 标准交互 |
| Medium 1 | 250ms | 面板展开 |
| Medium 2 | 300ms | 标准转场 |
| Medium 3 | 350ms | 复杂转场 |
| Medium 4 | 400ms | 全屏转场 |
| Long 1 | 450ms | 强调动画 |
| Long 2 | 500ms | 复杂强调 |
| Extra Long 1-4 | 700-1000ms | 极少使用 |
Easing
/* Standard — 不离开屏幕的移动 */ --md-standard: cubic-bezier(0.2, 0, 0, 1); --md-standard-decelerate: cubic-bezier(0, 0, 0, 1); --md-standard-accelerate: cubic-bezier(0.3, 0, 1, 1); /* Emphasized — 更有表达力的移动 */ --md-emphasized: cubic-bezier(0.2, 0, 0, 1); --md-emphasized-decelerate: cubic-bezier(0.05, 0.7, 0.1, 1); --md-emphasized-accelerate: cubic-bezier(0.3, 0, 0.8, 0.15);
转场模式
| 模式 | 用途 | 示例 |
|---|---|---|
| Container Transform | 元素展开为页面 | 卡片 → 详情页 |
| Shared Axis | 同层级导航 | Tab 切换 |
| Fade Through | 无关联页面切换 | Bottom Nav 切换 |
| Fade | 简单出现/消失 | Dialog、Snackbar |
8. 导航模式
按设备选择
| 设备 | 推荐导航 | 组件 |
|---|---|---|
| 手机(竖屏) | 底部导航 | Navigation Bar(3-5 项) |
| 手机(横屏) | 侧边导航 | Navigation Rail |
| 平板 | 侧边导航 | Navigation Rail / Drawer |
| 桌面/大屏 | 侧边导航 | Navigation Drawer(常驻) |
| 折叠屏 | 自适应 | Rail(折叠)→ Drawer(展开) |
Navigation Bar(底部导航)
┌───────────────────────────────────┐ │ │ │ Content Area │ │ │ ├─────┬─────┬─────┬─────┬─────────┤ │ 🏠 │ 🔍 │ ➕ │ 💬 │ 👤 │ │ Home │Search│ Add │ Chat │Profile │ └─────┴─────┴─────┴─────┴─────────┘
- 3-5 个目的地
- 选中项显示 label + 指示器(pill 形状)
- 高度:80dp
- 指示器:64×32dp,圆角 16dp
Navigation Rail(侧边窄导航)
┌──┬──────────────────────┐ │🏠│ │ │──│ │ │🔍│ Content Area │ │──│ │ │💬│ │ │──│ │ │⚙️│ │ └──┴──────────────────────┘
- 宽度:80dp
- 可选 FAB 在顶部
- 选中项有 pill 指示器
9. Dark Theme
M3 Dark Theme 规则
Surface: 极深灰(#1C1B1F),不是纯黑 #000000 On Surface: 极浅灰(#E6E1E5),不是纯白 #FFFFFF
| 原则 | 实践 |
|---|---|
| 避免纯黑 | Surface 用 #1C1B1F(Neutral Tone 6) |
| 减少大面积白色 | 用 Surface Tint 代替白色卡片 |
| 降低饱和度 | Primary 用更亮的色调(Tone 80) |
| 反转容器关系 | Light: 容器比背景浅 → Dark: 容器比背景浅(tint 更高) |
与 Apple Dark Mode 对比
Apple: 深灰 #1E1E1E,偏中性 Material: 极深灰 #1C1B1F,带紫色调(从 Neutral palette 来) Apple: 不鼓励纯黑(但 OLED 用 #000000) Material: 明确不推荐纯黑
10. 平台差异速查
| 差异点 | Material (Android) | Apple (iOS) |
|---|---|---|
| 主强调色 | Dynamic Color(壁纸取色) | System Blue #007AFF |
| 正文字号 | 16dp (Body Large) | 17pt (Body) |
| 按钮圆角 | 20dp(全圆角) | 无标准(偏 8-12px) |
| 对话框圆角 | 28dp | ~14px |
| 导航 | 底部 Navigation Bar | 底部 Tab Bar |
| 返回 | 系统返回手势/按钮 | 左上角 Back Button |
| 主操作 | FAB(浮动操作按钮) | Navigation Bar Button |
| 下拉刷新 | 有 | 有(Pull to Refresh) |
| Toast/提示 | Snackbar(底部,可操作) | Alert / Toast(中间/顶部) |
| 触控目标 | 48dp | 44pt |
| 标题栏 | Top App Bar(多样式) | Navigation Bar(标准) |
11. Checklist
设计审计
- 使用 M3 Color Scheme(Primary/Secondary/Tertiary + Surface 系列)
- 按钮用全圆角(20dp radius)
- Card 用 12dp 圆角
- Dialog 用 28dp 圆角
- 触控目标 ≥ 48dp
- 排版使用 M3 Type Scale
- Elevation 用 Surface Tint 而非纯阴影
- 导航选对设备模式(Bar / Rail / Drawer)
- 动画使用 M3 标准 easing
Dark Theme
- Surface 不用纯黑(用 Neutral Tone 6)
- On Surface 不用纯白
- Primary 用 Tone 80(更亮)
- Surface Tint 可见
- 对比度 ≥ 4.5:1
Android 开发
- 支持 Dynamic Color(Android 12+)
- 低版本 fallback 到静态配色
- 使用 MaterialTheme(Compose)或 Theme.Material3(XML)
来源
Material Design 3 (m3.material.io) + Material Theme Builder + Jetpack Compose 官方组件参考。
热门AI工具
相关专题
本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。
0
2026.11.06
围绕Postman HTTP请求头配置展开,讲解Headers选项的具体使用方式,包括Key和Value参数填写、请求头信息添加、常见Header字段设置及请求头修改方法,帮助用户解决接口调试过程中遇到的请求头配置问题。
0
2026.11.06
详细介绍Postman接口请求的创建与发送方法,涵盖GET和POST请求、URL配置、请求参数、Headers请求头、Body请求体设置以及响应结果查看,帮助用户掌握Postman接口请求的完整操作流程。
0
2026.11.06
DBeaver数据导入专题,整理Excel、CSV、SQL、TXT等常见文件的数据导入方法,涵盖目标数据库选择、数据表创建、字段映射、数据类型设置及导入参数配置等操作,帮助用户将本地文件中的数据写入数据库,并了解批量导入、重复数据处理和导入失败等常见问题的解决方法。
0
2026.11.05
DBeaver安全防护专题,围绕数据库连接安全、账号密码保护和访问权限管理展开,整理SSL/TLS加密连接、SSH隧道、数据库凭据保存及证书验证等配置方法,同时介绍敏感信息保护、远程连接风险和高权限账号使用等注意事项,帮助用户提高数据库日常管理的安全性。
0
2026.11.05
本专题聚焦DBeaver数据库连接配置与管理,覆盖从新建连接、选择数据库类型到填写连接参数和验证连接的完整流程。针对MySQL、PostgreSQL、SQL Server等常见数据库,整理相应的连接设置方法,并提供驱动缺失、认证失败和连接异常等问题的排查方向。
0
2026.11.04
本专题围绕XORM框架的结构体映射展开,说明表名与字段的命名策略、xorm标签常用属性、主键自增与时间字段自动填充,并演示Sync2自动建表、增量字段升级、索引声明与反向生成结构体的完整流程。
0
2026.11.04
本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。
0
2026.11.04
本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。
0
2026.11.04
热门下载
相关下载
精品课程
共6课时 | 12.1万人学习
共79课时 | 161.8万人学习
共6课时 | 54.7万人学习
最新文章