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 中定义:

    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 属性:

    XML 复制代码
    <TextView
        android: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...)。
  • 合理的留白能提升可读性和视觉舒适度。
  • 使用 paddingmargin 属性控制间距。

五、在 Android Studio 中实践

1. 添加 Material Design 依赖

app/build.gradledependencies 块中添加:

Groovy 复制代码
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 管理所有文本
✅ 为图标和图片提供不同分辨率的资源
✅ 考虑深色模式适配

七、结语

感谢您的阅读!如果你有任何疑问或想要分享的经验,请在评论区留言交流!

相关推荐
zhen_hong4 分钟前
ReactAgent原理
android·java·javascript
皮皮宋吖12 分钟前
皮皮宋渗透日记 11|文件包含漏洞全解析:LFI/RFI/ 伪协议 / 绕过 / 防御
android·安全
阿拉斯攀登17 分钟前
【无人售货柜・RK+YOLO】篇 6:安卓端落地!RK3576 + 安卓系统,YOLO RKNN 模型实时推理保姆级教程
android·人工智能·yolo·目标跟踪·瑞芯微·嵌入式驱动
只能是遇见42 分钟前
ERROR 1524 (HY000) Plugin ‘mysql_native_password‘ is not loaded
android·数据库·mysql
helloworddm1 小时前
第一篇:设计模式在 Android 视频播放器中的实战应用
android·设计模式·音视频
恋猫de小郭1 小时前
Android 禁止侧载将正式实施,需要等待 24 小时冷静期
android·flutter·harmonyos
idealzouhu1 小时前
【Kotlin】 数据流完全指南:冷流、热流与 Android 实战
android·开发语言·kotlin
有位神秘人1 小时前
Android中Mvvm+Retrofit的常用网络架构记录
android·网络·retrofit
常利兵1 小时前
Android 字体字重设置:从XML到Kotlin的奇妙之旅
android·xml·kotlin
hnlgzb2 小时前
kotlin安卓app中,当一个类继承ViewModel类的时候,这个类是想干什么?
android·开发语言·kotlin