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. 固定色系

相关推荐
mldong1 小时前
一个 App,十三套后端:手机审批端 uni-jeeflow-app 开源了
java·架构
157092511342 小时前
Android进阶之光:HTTP协议原理深度解析
android·网络协议·http
tqs_123452 小时前
MySQL RR隔离级别死锁|Gap间隙锁、临键锁,订单并发范围查询死锁根因方案
java
终端安全笔记2 小时前
安卓五品牌通道差在哪:监管通道拆解
android
逆境不可逃2 小时前
Pi Agent 学习笔记:多个工具怎样并行执行
java
浪子明X3 小时前
十六位账本怎样发现传输差错:Internet Checksum 生活类比
开发语言
v_34836087623 小时前
Android native端 堆栈打印
android·算法
Flynt3 小时前
Java 27 升级实测:默认值动得比新特性多,有个老参数会让 JVM 直接起不来
java·jvm·后端
Bs_MoneyMagnet3 小时前
基于springboot+vue的个人健康管理系统的设计与实现 源码+文档
java·vue.js·spring boot·后端·vue3·springboot3·计算机毕业设计
一笑的小酒馆3 小时前
AndroidKMP之导航和WebView
android