在使用基于视图的系统时,我们可以使用以下代码来协调颜色。
MaterialColors.harmonizeWithPrimary(context, colorToHarmonize)
在完全迁移到 Jetpack Compose 且所有颜色值都存储在
Color.kt
文件中的项目中,如何在运行时对颜色应用协调?
可以使用方法
MaterialColors.harmonize(colorToHarmonize, colorToHarmonizeWith)
并将您的自定义颜色与动态配色方案中的primaryColor协调一致
MaterialColors.harmonize(customColor.toArgb(), MaterialTheme.colorScheme.primary.toArgb())
如果您想进行额外的步骤,您可以通过 CompositionLocalProvider 提供协调值,以将其提供到合成中,以匹配 MaterialTheme.colorScheme 提供动态颜色的方式。
我在这个项目中进一步探讨了这个问题:https://github.com/acolombo25/harmonized-colors-compose
有一个Material Kolor库。它能够协调组合颜色。
只需将其添加到您的 build.gradle 文件中:
implementation("com.materialkolor:material-kolor:1.7.0")
然后,您可以使用此代码来协调您的颜色(在本例中为绿色)与主题的原色:
MaterialTheme.colorScheme.harmonizeWithPrimary(Color.Green)
或者您可以协调任意颜色:
Color.Red.harmonize(Color.Blue)
我鼓励您查看图书馆的文档,您可以做的事情比我刚刚在这里展示的更多。