颜色:
一种颜色是由红、绿、蓝三种颜色合成出来的,所以参数color只能取8位的0xAARRGGBB样式颜色值
其中:
A代表透明度:
取值范围是0~255(对应十六进制数0x00~0xFF),取值越小,透明度越高,图像也就越透明。当取0时,图像完全不可见
R代表红色值:
取值范围是0~255(对应十六进制数0x00~0xFF),取值越小,红色越少,当取0时,表示红色完全不可见,当取255时,红色完全显示
G代表绿色值:
取值范围是0~255(对应十六进制数0x00~0xFF),取值越小,绿色越少,当取0时,表示绿色完全不可见,当取255时,绿色完全显示
B代表蓝色值:
取值范围是0~255(对应十六进制数0x00~0xFF),取值越小,蓝色越少,当取0时,表示蓝色完全不可见,当取255时,蓝色完全显示
举例:
比如0xFFFF0000就表示大红色,因为透明度是255,表示完全不透明,红色取全量值255,其他色值全取0,表示颜色中只有红色;比如0xFF0F0000就会显示弱红色,当表示黄色时,由于黄色是由红色和绿色合成的,所以0xFFFFFF00就表示纯黄色,如果我们需要让黄色带有一部分透明度,比如0xABFFFF00,当透明度值减少到0时,任何颜色都是不可见的,就是图像变成了全透明,比如0x00FFFFFF虽然有颜色值,但由于透明度是0,所以整个颜色是不可见的;
常量颜色:
可以通过Color.XXX来直接使用这些颜色,比如红色,在代码中可以直接使用Color.RED
颜色合成:
Color.argb(int alpha,int red,int green,int blue)
Color.rgb(int red,int green,int blue)
有时候会看到直接利用(alpha<<24)|(red<<16)|(green<<8)|blue
来合成对应颜色值的过程,其实跟利用Color.argb()函数来合成的结果是一样的,因为Color.argb()函数实现原理:
public static int argb(int alpha,int red,int green,int blue){
return (alpha<<24)|(red<<16)|(green<<8)|blue;
}
<<是左位移符号,|是二进制运算符,将各个二进制合并之后的结果就是分别对应A、R、G、B、分量
提取颜色分量:
我们不仅能通过Color类来合并颜色分量,而且能从一个颜色中提取出指定的颜色分量
函数:
Color.alpha(int color) //提取透明度
Color.red(int color) //提取红色分量
Color.green(int color) //提取绿色分量
Color.blue(int color) //提取蓝色分量
示例:
int green=Color.green(0xFF000F00); //得到的结果就是0x0F