推荐开发者使用 Material Design 组件
Material Design 规范
https://material.io/design/introduction
Android 用户希望您的应用在视觉和行为上与系统保持一致。您在设计视觉和导航模式时应该遵循 Material Design 规范…
—— d.android.com/design
您可以使用 Material Design Components (MDC) 组件库来实现这一目的。本文将列出使用 MDC 的优势,从而说明我们推荐使用它的原因。
Material Design Components
https://github.com/material-components/material-components-android
d.android.com/design
https://developer.android.google.cn/design
组件
<!-- Copyright 2019 Google LLC.
SPDX-License-Identifier: Apache-2.0 -->
<!-- 标准组件 Button 将会被替换为 MaterialButton -->
<Button ... />
<!-- 您甚至可以使用 MaterialButton 特定的属性 -->
<Button ...
app:icon="@drawable/foo"/>
<!--如果您想用具有向后兼容能力的 AppCompatButton 而不是 MaterialButton,您可以这样做 -->
<androidx.appcompat.widget.AppCompatButton ... />
Buttons
https://material.io/develop/android/components/buttons
Toolbars
https://material.io/develop/android/components/app-bars-top
CheckBox
https://material.io/develop/android/components/checkboxes
View Inflater
https://developer.android.google.cn/reference/com/google/android/material/theme/MaterialComponentsViewInflater
所有 Material 组件都继承自对应的 AppCompat 组件,因此它们享有相同的向后兼容能力和新版本的 bug 修复。
Material 组件在对应的系统标准组件和 AppCompat 组件的基础上拓展出更多样式和功能,例如 MaterialButton 拥有以下多种样式:
<!-- Copyright 2019 Google LLC.
SPDX-License-Identifier: Apache-2.0 -->
<!-- Contained button -->
<Button ...
style="?attr/materialButtonStyle"/>
<!-- Text button -->
<Button ...
style="?attr/borderlessButtonStyle"/>
<!-- Outlined button -->
<Button ...
style="?attr/materialButtonOutlinedStyle"/>
我最喜欢的功能之一是使用 MaterialTextView 替换 TextView,它新增的功能可以很方便地在 TextAppearance 中设置行高。
MaterialTextView https://material.io/develop/android/components/material-text-view 新增的功能 https://medium.com/androiddevelopers/whats-your-text-s-appearance-f3a1729192d
除了拓展现有组件的功能外,MDC 还提供了一系列全新的组件。您可能知道 Bottom Navigation、Bottom Sheet 和 Floating Action Button,但未必听说过 Chips、Date Picker 和 Time Picker。
Bottom Navigation
https://material.io/develop/android/components/bottom-navigation-view/
Bottom Sheet
https://material.io/develop/android/components/bottom-sheet-behavior/
Floating Action Button
https://material.io/develop/android/components/floating-action-button/
Chips
https://material.io/develop/android/components/chip/
Date Picker
https://material.io/develop/android/components/picker
Time Picker
https://github.com/material-components/material-components-android/blob/master/docs/components/TimePicker.md
MDC 提供的全部组件列单,请查阅——组件:
https://material.io/components
Material 主题
Material 主题可以更系统地自定义 Material Design 样式来体现您的产品品牌。Material 主题包括颜色、字体样式和形状属性。对其进行自定义将自动应用到您用于构建应用的组件上。
Material 主题
https://material.io/design/material-theming/
颜色
https://material.io/design/color/
字体样式
https://material.io/design/typography/
形状
https://material.io/design/shape/
您可以将 Material 主题理解为创建设计系统的设计系统 🤯。您只需配置好颜色、字体样式和形状,即可得到一套基于您品牌的完整设计系统。
Nick Rout https://medium.com/@ricknout
深色主题
深色主题背景规范 https://material.io/design/color/dark-theme.html
Chris Banes 在下面这篇文章中深入介绍了 MDC 的深色主题:
Chris Banes https://chrisbanes.medium.com/
Material 动效 🆕
规范 https://material.io/design/motion/the-motion-system.html
Hunter Stich 在下面这篇文章中介绍了 Material Motion 库:
Hunter Stich https://medium.com/@hunter_stich
使用 Compose
Jetpack Compose https://developer.android.google.cn/jetpack/compose MDC-Android Compose 主题适配器 https://github.com/material-components/material-components-android-compose-theme-adapter MaterialTheme https://developer.android.google.cn/reference/kotlin/androidx/compose/material/package-summary#materialtheme
推荐使用 Material
https://medium.com/androiddevelopers/migrating-to-material-components-for-android-ec6757795351
Material Design Components
https://github.com/material-components/material-components-android
近期更新
https://developer.android.google.cn/studio/preview/features#mdc-templates
推荐阅读