Jetpack Compose - MaterialExpressiveTheme 与 MaterialTheme、ColorScheme

MaterialExpressiveTheme 与 MaterialTheme

  • 这两个函数都是 Jetpack Compose 的主题包装器,MaterialExpressiveTheme 是 MaterialTheme 的升级版
kotlin 复制代码
fun MaterialExpressiveTheme(
    colorScheme: ColorScheme? = null,
    motionScheme: MotionScheme? = null,
    shapes: Shapes? = null,
    typography: Typography? = null,
    content: @Composable () -> Unit,
)
参数 说明
colorScheme 定义应用的颜色体系
motionScheme 定义动画和过渡的运动方案
shapes 定义组件(例如,按钮、卡片、对话框)的形状
typography 定义全局的字体样式系统
content 内容
kotlin 复制代码
fun MaterialTheme(
    colorScheme: ColorScheme = MaterialTheme.colorScheme,
    shapes: Shapes = MaterialTheme.shapes,
    typography: Typography = MaterialTheme.typography,
    content: @Composable () -> Unit,
)
参数 说明
colorScheme 定义应用的颜色体系
shapes 定义组件(例如,按钮、卡片、对话框)的形状
typography 定义全局的字体样式系统
content 内容
  • 自定义主题包装器,它接收 content 并传递给 MaterialTheme,在主题中集中管理颜色、字体和形状
kotlin 复制代码
@Composable
fun MyTheme(
    ...
    content: @Composable () -> Unit
) {
	...

    MaterialTheme(
        ...
        content = content
    )
}

ColorScheme

  • ColorScheme 定义了 Material Design 3 中完整的颜色系统,它是 Compose 主题的核心
kotlin 复制代码
class ColorScheme(
    val primary: Color,
    val onPrimary: Color,
    val primaryContainer: Color,
    val onPrimaryContainer: Color,
    val inversePrimary: Color,

    val secondary: Color,
    val onSecondary: Color,
    val secondaryContainer: Color,
    val onSecondaryContainer: Color,

    val tertiary: Color,
    val onTertiary: Color,
    val tertiaryContainer: Color,
    val onTertiaryContainer: Color,

    val background: Color,
    val onBackground: Color,

    val surface: Color,
    val onSurface: Color,
    val surfaceVariant: Color,
    val onSurfaceVariant: Color,
    val surfaceTint: Color,
    val inverseSurface: Color,
    val inverseOnSurface: Color,

    val error: Color,
    val onError: Color,
    val errorContainer: Color,
    val onErrorContainer: Color,

    val outline: Color,
    val outlineVariant: Color,

    val scrim: Color,

    val surfaceBright: Color,
    val surfaceDim: Color,
    val surfaceContainer: Color,
    val surfaceContainerHigh: Color,
    val surfaceContainerHighest: Color,
    val surfaceContainerLow: Color,
    val surfaceContainerLowest: Color,
    
    val primaryFixed: Color,
    val primaryFixedDim: Color,
    val onPrimaryFixed: Color,
    val onPrimaryFixedVariant: Color,
    val secondaryFixed: Color,
    val secondaryFixedDim: Color,
    val onSecondaryFixed: Color,
    val onSecondaryFixedVariant: Color,
    val tertiaryFixed: Color,
    val tertiaryFixedDim: Color,
    val onTertiaryFixed: Color,
    val onTertiaryFixedVariant: Color,
)
  1. 主色系:Primary
属性 说明
primary 主色
onPrimary 位于主色之上的颜色,例如,按钮上的文字
primaryContainer 主色的容器版本,更浅或更深,用于背景色块
onPrimaryContainer 容器上的内容颜色
inversePrimary 反色主题下的主色,用于深色模式下的强调
  1. 副色系:Secondary、Tertiary
属性 说明
secondary 次级配色
onSecondary 位于次级配色之上的颜色
secondaryContainer 次级配色的容器版本
onSecondaryContainer 容器上的内容颜色
属性 说明
tertiary 三级配色
onTertiary 位于三级配色之上的颜色
tertiaryContainer 三级配色的容器版本
onTertiaryContainer 容器上的内容颜色
  1. 背景与表面:Background、Surface

  2. 状态反馈:Error

  3. 轮廓与遮罩:Outline、Scrim

  4. 扩展表面层级

  5. 固定色系

相关推荐
2501_944521592 小时前
Ramda 跨端三方库仓颉适配全流程
开发语言·javascript·flutter·php
行思理2 小时前
go语言学习难度及适合学习的人群
开发语言·学习·golang
wangchunyu1144 小时前
JAVA CompletableFuture异步编程实战
java·开发语言·python
paopaokaka_luck5 小时前
流浪动物救助与收养系统(DeepSeek AI对话、 ECharts多维分析、救助流程衔接、领养与回访衔接、 捐赠确认与公示、志愿者协作)
java·前端·javascript·人工智能·mysql·echarts·推荐算法
Thomas.Sir5 小时前
第9课:SpringBoot4.x Web开发基础:WebMvc自动配置、静态资源、请求参数接收
java·spring boot
程序 代码狂人5 小时前
切片表与分区表的区别(数据开发面试版)
java·大数据·开发语言·数据仓库·算法
警醒与鞭策6 小时前
Codex桌面版与Claude桌面版使用设置
android·unity·ai·性能优化
2501_944521596 小时前
Deepmerge 跨端三方库仓颉适配全流程
java·python·eclipse·github
meiying88386 小时前
快递单号批量查询Python脚本:从手动到自动化的完整实现
开发语言·python·自动化
@大迁世界7 小时前
告别 Go,拥抱 Rust
开发语言·golang·rust