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...)。
  • 合理的留白能提升可读性和视觉舒适度。
  • 使用 padding 和 margin 属性控制间距。

五、在 Android Studio 中实践

1. 添加 Material Design 依赖

在 app/build.gradle 的 dependencies 块中添加:

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

七、结语

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

相关推荐
三少爷的鞋7 小时前
Android 协程实践:为什么不应将 `supervisorScope` 作为常规方案
android
承渊政道8 小时前
【从零开始大模型开发与微调:基于PyTorch与ChatGLM】(从ChatGLM本地化到LoRA、PEFT的高级微调)
android·人工智能·pytorch·chatglm·本地化部署·大模型开发与微调
2601_9628857210 小时前
如何用 Python 判断一只股票“追涨”还是“抄底”更有效?
android·开发语言·python
素师良码10 小时前
第10篇:屏ESD Check内核逻辑驱动代码完整拆解
android
高晶10 小时前
Android 短信收发模块从零到实战:权限配置、界面设计、发送接收与兼容性适配全攻略
android·程序员
随遇丿而安10 小时前
第18周:ViewModel 基础功能 + 架构优化
android
问心无愧051313 小时前
[GXYCTF2019]Ping Ping Ping
android·笔记
事圆则缓13 小时前
Kotlin 异步与并发:从一次搜索请求走到状态流
android·开发语言·kotlin
帅得不敢出门14 小时前
Android Framework定制卸载确认窗口
android
Android-Flutter15 小时前
Compose 什么叫重组?怎么样触发重组?
android·compose