前言
下文三种的color都是替换下列代码中的color
Text(text = "Text",
color = 是这里
)
一、直接设置😀
import androidx.compose.ui.graphics.Color
color = Color(99000000)
color = Color(0xFF000080)
color = Color(20,0,2)
- 参数int 从 ARGB 颜色 int 创建一个新的Color实例。生成的颜色位于sRGB颜色空间中。
- 参数long 从 ARGB 颜色 int 创建一个新的Color实例。生成的颜色位于sRGB颜色空间中。这对于在不使用Long.toInt的情况下以数字形式指定 alpha 大于 0x80 的颜色很有用:0xff与colors.xml中的 # 号等价
- 从 ARGB 颜色组件创建一个新的Color实例。生成的颜色位于sRGB颜色空间中。默认 alpha 值为0xFF (不透明)。
参数:
red - 颜色的红色分量,介于 0 和 255 之间。
green - 颜色的绿色分量,介于 0 和 255 之间。
blue - 颜色的蓝色分量,介于 0 和 255 之间。
alpha - 颜色的 alpha 分量,介于 0 和 255 之间。
二、使用colors.xml中的颜色😃
import androidx.compose.ui.res.colorResource
color = colorResource(id = R.color.color_666666)
其中R.color.color_666666为xml中的颜色
三、使用compose主题中的颜色😄
实际上也是用第一种方式,不过为了适配compose中的主题做了封装,导致使用也有新花样,在Color.kt中有如下初始化颜色
在Theme.kt中如下引用
然后再页面中
import androidx.compose.material3.MaterialTheme
color = MaterialTheme.colorScheme.primary
如果不是3的话应该是
color = MaterialTheme.color.primary
后文所有colorScheme都是替换color
这种引用看起来比前面两种复杂,但你先别急,
假设你需要一个新的颜色,但他和MaterialTheme.color.primary只有一个透明度的区别,如果去加一个新颜色是不是非常麻烦,但是如果你使用MaterialTheme,那么就只需要改为如下
MaterialTheme.colorScheme.primary.copy(alpha = 0.1f)
方便多了,不是吗?