引言
JetPack Compose
正式版已经发布好几个月了,在这段时间里,除了业务相关需求之外,我也开始了 Compose
在实际项目中的落地实验,因为一旦要接入当前项目,那么遇到的问题其实远远大于新创建一个项目所需要的问题。
本篇要解决的就是 Compose
默认 Material
主题颜色太少,如何配置自己的业务颜色板,或者说,如何自定义自己的颜色系统,并由点入深,系统的分析相关实现方法与原理。
问题
在开始之前,我们先看看目前创建一个 Compose
项目,默认的 Material
主题为我们提供的颜色有哪些:
对于一个普通的应用而言,默认的已基本满足开发使用,基本的主题配色已经足够。但是此时一个问题出现了,如果我存在其他的主题配色呢?
传统做法
在传统的 View
体系中,我们一般都会将颜色定义在 color.xml 文件中,在使用的时候直接读取即可,getColor(R.xx) ,这个大家都已经很熟悉了,那么在 Compose
中呢?
Compose
在 Compose
中,google
将颜色数值统一放在了 theme
下的 color.kt 中,这其实也就是全局静态变量,乍一看好像没什么问题,那我的业务颜色放在那里呢,总不能都全局暴露吧?
但是聪明的你肯定知道,我按照老办法放到 color.xml 里不就行哈,这样也不是不可以,但是随之而来的问题如下:
- 切换主题时候,颜色怎么统一解决?
- 在
Google
的 simple 里,color.xml 里往往不会写任何配置,即 Google 本身不建议在compose
里这样用
那么我该怎么办,我去看看google的simple,看看他们怎么解决:
simple果然是simple