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

相关推荐
晚安code2 小时前
Java 异常与日志规范:错误码、异常处理、日志规约一次讲清
java
深海呐2 小时前
仓颉语言是ArkTs的上层语言吗?就像kotlin和Java
java·开发语言·kotlin·仓颉
隔窗听雨眠2 小时前
OceanBase旁路导入与自增主键冲突深度解析:原理、排查与解决方案
java·服务器·数据库
白露与泡影2 小时前
聊聊物联网Java后端的核心技术难点(水表/电表/充电桩实战)
java·开发语言·物联网
gumichef3 小时前
第一章:面向对象核心——类和对象深度讲解
开发语言·c++
冷咖啡离 我的笨笨3 小时前
数据去重:通过 C# 删除 Excel 中的重复行
开发语言·c#·excel
lilian2333 小时前
Harmony os 技术实战|拼豆制图06:收藏 ID、生成记录与重启恢复怎么不打架
android·java·数据库·harmonyos
2601_955759623 小时前
ClaudeAPI成本中心与业务标签设计指南
android·java·数据库
AFinalStone3 小时前
Android 7系统异常问题排查(五)Framework层(下)—System Server崩溃
android·tombstone·系统异常