#每天一个知识点#
**Material 3(Material You)** 是 Google 设计系统的演进版,核心原则为**个性化、自适应与表现力**:界面从用户壁纸提取主题色,随屏幕尺寸灵活重组,并通过形状与动效传递情感。其最具革命性的特性是**动态取色**:算法基于 HCT 颜色空间,从单一壁纸种子色生成明暗两套完整方案,自动保障对比度与无障碍要求。与此同时,M3 用**语义角色**取代硬编码色值,组件只引用 `primary`、`onSurface`、`surfaceContainer` 等约 26 个角色名,换主题时无需改动组件代码。**色调表面**替代重阴影:层级越高,表面越向主色靠拢,以色彩而非投影表达深度。形状上,按钮默认为全圆角,卡片可用 12dp、对话框可用 28dp 等令牌化圆角;动效则引入弹簧物理,使交互更具“活性”。最简代码示例如下。
**Compose 示例**:
```kotlin
FilledButton(onClick = { /* 提交 */ }) { Text("提交") }
ExtendedFloatingActionButton(
onClick = { /* 新建 */ },
icon = { Icon(Icons.Default.Add, null) },
text = { Text("新建项目") }
)
```
**解读**:`FilledButton` 承担当前上下文的主操作(如提交),而 `ExtendedFloatingActionButton` 专用于“创建新事物”,二者在 M3 强调层级中位置不同,不可混用。更关键的是,组件颜色全部来自 `MaterialTheme.colorScheme` 的角色,不出现 `#FF6200` 这类字面色值——这正是 M3 将设计系统从“皮肤”升级为“语义框架”的实质:品牌色、动态壁纸、明暗模式都只是角色解析的不同输入,视觉一致性由角色关系保证,而非由固定像素保证。
**Material 3(Material You)** 是 Google 设计系统的演进版,核心原则为**个性化、自适应与表现力**:界面从用户壁纸提取主题色,随屏幕尺寸灵活重组,并通过形状与动效传递情感。其最具革命性的特性是**动态取色**:算法基于 HCT 颜色空间,从单一壁纸种子色生成明暗两套完整方案,自动保障对比度与无障碍要求。与此同时,M3 用**语义角色**取代硬编码色值,组件只引用 `primary`、`onSurface`、`surfaceContainer` 等约 26 个角色名,换主题时无需改动组件代码。**色调表面**替代重阴影:层级越高,表面越向主色靠拢,以色彩而非投影表达深度。形状上,按钮默认为全圆角,卡片可用 12dp、对话框可用 28dp 等令牌化圆角;动效则引入弹簧物理,使交互更具“活性”。最简代码示例如下。
**Compose 示例**:
```kotlin
FilledButton(onClick = { /* 提交 */ }) { Text("提交") }
ExtendedFloatingActionButton(
onClick = { /* 新建 */ },
icon = { Icon(Icons.Default.Add, null) },
text = { Text("新建项目") }
)
```
**解读**:`FilledButton` 承担当前上下文的主操作(如提交),而 `ExtendedFloatingActionButton` 专用于“创建新事物”,二者在 M3 强调层级中位置不同,不可混用。更关键的是,组件颜色全部来自 `MaterialTheme.colorScheme` 的角色,不出现 `#FF6200` 这类字面色值——这正是 M3 将设计系统从“皮肤”升级为“语义框架”的实质:品牌色、动态壁纸、明暗模式都只是角色解析的不同输入,视觉一致性由角色关系保证,而非由固定像素保证。
展开
1
2