Material Design

  • <font color=#FF7E17>前言
  • <font color=#FF7E17> 项目创建
  • <font color=#FF7E17> 风格对比
  • <font color=#FF7E17> 总结

博客创建时间:2022.05.23
博客更新时间:2023.05.07

以Android studio build=7.0.0,SDKVersion 31来分析讲解。如图文和网上其他资料不一致,可能是别的资料版本较低而已。


前言

统观Material Design,Google设计的Material Components不仅仅是实现了Android的开发规范,实际上Flutter、Web,甚至是iOS,都统一了开发范式,所以了解过Material Components的开发者会发现不论是Android还是Flutter,它们上面都有着类似的影子,大家可以看看文档。

Material Design官方 Demo:https://material.io/develop/android

官方说明文档:https://material.io/develop/android

github官网地址:https://github.com/material-components/material-components-android


项目创建

使用新版本的Android studio 创建的项目现在是默认支持AndroidX库&Material Design的。打开项目你会发现如下配置

1. material 库依赖

dependencies {

    implementation 'androidx.appcompat:appcompat:1.4.1'
    。。。
    implementation 'com.google.android.material:material:1.6.0'
  	。。。
	}

2. style 主题使用material风格

安卓Material Design 安卓material ui_安卓Material Design

其他的Theme有如下

Theme.MaterialComponents
	Theme.MaterialComponents.NoActionBar
	Theme.MaterialComponents.Light
	Theme.MaterialComponents.Light.NoActionBar
	Theme.MaterialComponents.Light.DarkActionBar
	Theme.MaterialComponents.DayNight
	Theme.MaterialComponents.DayNight.NoActionBar
	Theme.MaterialComponents.DayNight.DarkActionBar

3. 颜色说明

colorPrimary:应用的主要品牌颜色,最常用于主题
	colorPrimaryVariant:您的主要品牌颜色的较浅/较深变体,在主题中很少使用
	colorOnPrimary:用于显示在原色之上的元素的颜色(例如,文本和图标,通常为白色或半- 透明黑色,具体取决于可访问性)
	colorSecondary:您的应用的辅助品牌颜色,主要用作某些需要突出的小部件的重点
	colorSecondaryVariant:您的辅助品牌颜色的较浅/较深变体,在主题中很少使用
	colorOnSecondary:用于显示在辅助颜色之上的元素的颜色
	colorError:用于错误的颜色(通常是红色阴影)
	colorOnError:用于显示在错误颜色之上的元素的颜色
	colorSurface:用于表面的颜色(即材料“片材”)
	colorOnSurface:用于显示在表面颜色之上的元素的颜色
	colorBackground:所有其他屏幕内容背后的颜色
	colorOnBackground:用于显示在背景颜色之上的元素的颜色

风格对比

以自己的项目demo来对比,左边图片是实际运行效果,右边图片是布局预览效果。

安卓Material Design 安卓material ui_UI_02


当你使用MaterialComponents 主题时,在控件使用的颜色就会失去作用,如设置

背景色或字体颜色。

android:background="@color/color1"
android:onClick="@{click}"
android:text="蒙层color1"
android:textColor="@color/white"

这是google 为了界面的UI主题颜色的一种方案,每个控件如果颜色没有设置,则默认根据theme中设定的颜色来显示。

  1. 当然如果你需要保持原有的风格,格局控件的设置的背景色和文字颜色来显示UI,则可以对每个Activity单独设置Theme。
  2. 如果项目向正式用MaterialComponents 主题,但是某个Activity的某些UI需要自定义风格,某些继续保持Material 风格,则可以尝试使用Bridge主题。
<style name="Theme.CodeAanalysis" 	parent="Theme.MaterialComponents.DayNight.DarkActionBar.Bridge">
Theme.MaterialComponents.XXXXX.Bridge 是一种变种theme,专为解决前后版本的兼容性问题。

总结

Material Design 提供了大量的UI控件且丰富了UI风格,这里有我总结的一系列Material控件的使用总结,欢迎阅读。

有兴趣可以查看源码源码Demo>>

安卓Material Design 安卓material ui_UI_03