如何将 androidx.compose.ui.graphics.Color 转换为 android.graphics.Color (int)

Waq*_*hir 40 android android-jetpack-compose

如何从 Compose Color 转换为 Android Color Int?

我目前正在使用这段代码,它似乎有效,我似乎找不到一个函数来获取颜色的 Int 值

Color.rgb(color.red.toInt(), color.green.toInt(), color.blue.toInt())
Run Code Online (Sandbox Code Playgroud)

其中Color.rgb是一个返回整数颜色的函数android.graphics.Color,而颜色变量只是一个 Compose Color !

由于float需要更高的API

链接:如何将 android.graphics.Color 转换为 androidx.compose.ui.graphics.Color

Gab*_*tti 62

你可以使用该toArgb()方法

将此颜色转换为 ARGB 颜色整数。颜色整数始终位于 sRGB 颜色空间中

就像是:

//Compose Color androidx.compose.ui.graphics
val Teal200 = Color(0xFFBB86FC)

//android.graphics.Color
val color = Teal200.toArgb()
Run Code Online (Sandbox Code Playgroud)

您还可以使用类似的东西:

//android.graphics.Color
val color = android.graphics.Color.argb(
      Teal200.toArgb().alpha,
      Teal200.toArgb().red,
      Teal200.toArgb().green,
      Teal200.toArgb().blue
    )
Run Code Online (Sandbox Code Playgroud)

  • 加布里埃尔感谢您的回答,但您的回答中有一个小错误。需要切换 .blue 和 .green 参数,否则您将得到不正确的颜色转换;) (2认同)

Pet*_*r F 9

Android ComposeColor类现在具有函数toArgb(),可转换为 Color Int。

函数文档说:

将此颜色转换为 ARGB 颜色整数。颜色整数始终位于 sRGB 颜色空间中。这意味着如果需要的话会应用色彩空间转换。

-> 不再需要自定义转换函数。