Android开发-设计规范
一、什么是 Material Design?
Material Design 是 Google 于 2014 年推出的跨平台设计系统。它将现实世界的“材质”(Material) 概念引入数字界面,通过模拟纸张的层次、阴影、运动和触感,创造出直观、有深度且富有表现力的用户体验。
💡 核心理念:大胆、图形化、有意义(Bold, Graphic, Meaningful)。
二、Material Design 核心原则
1. 材质是隐喻(Material is the Metaphor)
- 界面元素被想象成类似纸张的“材质”卡片。
- 卡片可以有高度(Elevation),通过阴影(Shadow) 来表现层级关系。
- 高层级的卡片会覆盖在低层级的卡片之上。
- 在 Android 中:使用
CardView
组件,通过app:cardElevation
属性设置阴影。
2. 大胆的图形化(Bold, Graphic, Intentional)
- 排版(Typography):使用清晰、易读的字体(如 Roboto, Google Sans)。通过不同字号、字重(粗体、常规)建立视觉层次。
- 色彩(Color):使用大胆、饱和的色彩。遵循调色板(Color Palette) 概念,定义主色(Primary)、次色(Secondary)和错误色(Error)。
- 图标(Icons):使用简洁、一致的 Material Icons。
3. 动效有意义(Motion Provides Meaning)
- 动效不是装饰,而是传达信息、引导用户注意力、解释元素间关系的工具。
- 示例:
- 按钮点击时的涟漪效果(Ripple Effect)。
- 页面切换时的共享元素转场(Shared Element Transition)。
- 列表项的进入/退出动画。
三、关键 Material Design 组件
Android 提供了丰富的 Material Components for Android (MDC-Android)
库,实现了这些设计规范。
1. 颜色系统(Color System)
- 主色(Primary Color):代表应用的品牌色,用于工具栏、按钮等。
- 次色(Secondary Color):作为主色的补充,用于浮动操作按钮(FAB)、滑块等。
- 背景色(Background):应用的背景。
- 表面色(Surface):卡片、菜单等表面的颜色。
- 在代码中:在
themes.xml
中定义:<style name="Theme.MyApp" parent="Theme.Material3.DayNight"><item name="colorPrimary">@color/primary</item><item name="colorSecondary">@color/secondary</item><item name="android:background">@color/background</item> </style>
2. 排版系统(Typography)
- 定义了从
Display
(最大标题)到Body
(正文)和Caption
(说明文字)的多种文本样式。 - 在代码中:使用
Text
组件的style
属性:<TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Hello Material"style="@style/TextAppearance.Material3.HeadlineLarge" />
3. 常用 UI 组件
组件 | 说明 | Android 实现 |
---|---|---|
Top App Bar | 应用顶部的导航栏,包含标题、菜单、操作按钮。 | MaterialToolbar |
Bottom App Bar | 底部导航栏,常与 FAB 配合使用。 | BottomAppBar |
Navigation Drawer | 从屏幕边缘滑出的侧边栏菜单。 | NavigationDrawerView |
Bottom Navigation | 底部标签栏,用于在顶级视图间切换。 | BottomNavigationView |
Floating Action Button (FAB) | 圆形按钮,代表应用的主要操作。 | ExtendedFloatingActionButton |
Card | 矩形卡片,用于展示相关内容组。 | CardView |
Button | 包含文本按钮、悬浮按钮、轮廓按钮等。 | MaterialButton |
TextField | 文本输入框,支持标签、辅助文本、图标等。 | TextInputLayout + TextInputEditText |
Snackbar | 短暂显示的轻量级提示,可包含操作按钮。 | Snackbar.make() |
Dialog | 模态对话框,用于重要提示或选择。 | MaterialAlertDialogBuilder |
四、布局与导航规范
1. 响应式布局
- 应用应适应不同屏幕尺寸(手机、平板、折叠屏)。
- 使用
ConstraintLayout
构建灵活的布局。 - 利用
Fragment
将界面模块化。
2. 导航模式
- 层次导航:使用返回栈(Back Stack),如从列表进入详情页。
- 平面导航:在同级内容间切换,如 Bottom Navigation。
- 模态导航:临时打断主流程,如 Dialog 或 Bottom Sheet。
3. 间距与留白
- 使用 8dp 作为基础网格单位(8dp, 16dp, 24dp...)。
- 合理的留白能提升可读性和视觉舒适度。
- 使用
padding
和margin
属性控制间距。
五、在 Android Studio 中实践
1. 添加 Material Design 依赖
在 app/build.gradle
的 dependencies
块中添加:
dependencies {implementation 'com.google.android.material:material:1.12.0' // 使用最新稳定版// ...
}
2. 使用 Material 主题
确保你的应用主题继承自 Material 主题(如 Theme.Material3.DayNight
)。
3. 使用预览功能
在 activity_main.xml
的预览窗口中,你可以:
- 切换深色/浅色主题。
- 预览不同屏幕尺寸的效果。
- 查看组件的实际渲染。
六、总结:设计规范 Checklist
项目 | 是否遵循 |
---|---|
✅ 使用 Material 主题(Theme.Material3 ) | ☐ |
✅ 定义清晰的主色、次色 | ☐ |
✅ 使用 MaterialButton , TextInputLayout 等 MDC 组件 | ☐ |
✅ 为卡片和按钮添加适当的阴影/涟漪效果 | ☐ |
✅ 遵循 8dp 网格系统设置间距 | ☐ |
✅ 使用 strings.xml 管理所有文本 | ☐ |
✅ 为图标和图片提供不同分辨率的资源 | ☐ |
✅ 考虑深色模式适配 | ☐ |
七、结语
感谢您的阅读!如果你有任何疑问或想要分享的经验,请在评论区留言交流!