Palette.getDominantColor() return 一个负数。 RGB 数据包 int

Palette.getDominantColor() return a negative number. RGB packet int

我正在尝试使用调色板从位图中选择主色:

val p: Palette = Palette.from(bitmap!!).generate()
Log.d(TAG, "${p.getDominantColor(0)}")

输出为-8341352

reference 返回的值是一个 RGB 数据包 int。那么怎样才能得到颜色的真实信息呢?我无法从七位数的负整数中找到与 RGB 值的比较

使用颜色实用程序函数将颜色的 RGBA 分量提取为 0-255(含)范围内的整数。

val argb = p.getDominantColor(0)
val a = Color.alpha(argb)
val r = Color.red(argb)
val g = Color.green(argb)
val b = Color.blue(argb)

如果您正在使用 androidx core-ktx 库(默认项目可能已经是),您可以通过解构来获取它们:

val (a, r, g, b) = p.getDominantColor(0)

如果您希望值在 0..1 范围内浮动,您可以将上述值除以 255f,或者如果您的最低 SDK 版本至少为 26,您可以像这样使用解构(注意 A 是最后一个而不是首先使用 Color class 而不是代表颜色的 Int):

val argb = p.getDominantColor(0)
val (r, g, b, a) = Color.valueOf(argb)