Android 颜色设置:透明度换算

简介

#开头色值

Android中的颜色值通常遵循RGB/ARGB标准,使用时通常以“#”字符开头,以16进制表示。比如程序中用到的:android:textColor=”#F8FF00” , 常用的颜色值格式为:

#RGB  
#ARGB  
#RRGGBB  
#AARRGGBB 

其中,ARGB 依次代表透明度(alpha)、红色(red)、绿色(green)、蓝色(blue)。
以颜色值 #FF99CC00 为例,其中,FF 是透明度,99 是红色值, CC 是绿色值, 00 是蓝色值。

代码中的色值

在android中经常看到设置的颜色为八位的十六进制的颜色值,例如:

public static final class color {
    public static final int lightblue=0x7f040000;
}

或者在 Java 中

textView.setTextColor(0xffff00f);

说明:

  • 0xffff00ff 是 int 类型的数据,分组一下 0x|ff|ff00ff0x 表示颜色整数的标记,ff表示透明度,ff00ff表示色值,注意:0x后面ffff00ff必须是8位的颜色表示

  • 颜色和不透明度 (alpha) 值以十六进制表示法表示。任何一种颜色的值范围都是 0到 255(00到 ff)。

  • 对于 alpha,00表示完全透明,ff表示完全不透明。

  • 表达式顺序是”aabbggrr”,其中”aa=alpha”(00到ff);”bb=blue”(00到ff);”gg=green”(00到ff);”rr=red”(00到ff)。


透明度

  • 透明度分为256阶(0-255),计算机上用16进制表示为(00-ff)。透明就是0阶,不透明就是255阶,如果50%透明就是127阶(256的一半当然是128,但因为是从0开始,所以实际上是127)。

  • 透明度 和 不透明度 是两个概念, 它们加起来是1,或者100%.

  • ARGB 中的透明度alpha,表示的是不透明度。依据来自维基百科中的定义。


换算

在开发过程中,UI/UE给的标注图上,所有颜色值是RGB,但是透明度经常都是百分比,例如:颜色值:#FFFFFF,透明度40%。
使用过程中我们需要进行换算。以之前的值为例,换算过程如下:

  • 将透明度转换成不透明度(转换方式参考“透明度”,第2条) 。 不透明度为60%

  • 不透明度乘以255。 我们得到结果:153

  • 将计算结果转换成16进制。得到最终的不透明度:99

  • 将不透明度和颜色值拼接成ARGB格式。得到最终的颜色值: #99FFFFFF


常用不透明度对应十六进制值

100%— FF  
95% — F2  
90% — E6  
85% — D9  
80% — CC  
75% — BF  
70% — B3  
65% — A6  
60% — 99  
55% — 8C  
50% — 80  
45% — 73  
40% — 66  
35% — 59  
30% — 4D  
25% — 40  
20% — 33  
15% — 26  
10% — 1A  
5%  — 0D  
0%  — 00 

你可能感兴趣的:(Android)