2

对于给定的 TextView,如何获取 Alpha、Red、Green 和 Blue 值(0-255)?

我知道如何设置 TextView.SetBackgroundColor(Color.argb(a_int, r_int, g_int, b_int));

但是如何获得?

非常感谢

4

1 回答 1

9

使用ColorDrawable

ColorDrawable cd = (ColorDrawable) textView.getBackground();
int color = cd.getColor();
int alpha = cd.getAlpha();
int red = Color.red(color);
int green = Color.green(color);
int blue = Color.blue(color);

官方颜色文档

Color 类定义了创建和转换颜色整数的方法。

颜色表示为压缩整数,由 4 个字节组成:alpha、red、green、blue。

这些值是未预乘的,这意味着任何透明度都仅存储在 alpha 组件中,而不是存储在颜色组件中。

组件存储如下 (alpha << 24) | (红色 << 16) | (绿色 << 8) | 蓝色的。

每个组件的范围在 0..255 之间,0 表示对该组件没有贡献,255 表示 100% 的贡献。

因此不透明黑色将为 0xFF000000(100% 不透明,但没有来自红色、绿色或蓝色的贡献),不透明白色将为 0xFFFFFFFF

参考

于 2014-07-24T18:54:21.230 回答