Android中的十六进制颜色有时会有八个数字。为什么?#FFFFFF和#FFFFFF00之间有什么区别?

92
有时在Android的示例中,我看到使用#FF191919进行着色,这是一个八位十六进制数。但实际上只需要使用六位数。它们之间有什么关系呢?
如果我想将一个六位数字转换为八位数字,该怎么做?比如将#424242转换成八位数字颜色代码,具体细节是什么?
6个回答

111

额外的两个数字用于定义颜色的透明度,或者说 alpha 通道。

Android 使用 ARGB 格式(或者在你的例子中使用的 AARRGGBB)。

要获取更多(Android 特定的)信息,请查看 Color 文档


有没有一个好的程序可以在输入所有8个数字后显示颜色? - fIwJlxSzApHEZIl
有很多:任何值得尊敬的绘图应用程序都接受RGBA输入并显示结果颜色。或者搜索“rgb color picker”或“rgb color wheel”以找到提供此服务的网站。(注意:alpha数字并不是真正有趣的,因为它们定义透明度而不影响颜色) - Veger
1
单纯的回答并不能明确那额外的两位数字是哪两位。是前两位?后两位?还是在中间的两位? - Abhishek Jain
“额外的2位数字”表示它们被附加在后面(因此是最后两位),但我会更新答案以使其明确和正确。 - Veger

47

前两个字符表示 alpha(透明度)值,其中FF表示完全可见。这被称为ARGB


3
例如#FF000000#000000是一样的,它们都代表纯黑色吗? - Bruno Finger

16
八位十六进制值是一种ARGB颜色,与通常的RGB相同,但它提供了一个额外的alpha通道。
在RGB中#RRGGBB与ARGB中的#00RRGGBB相同。还可以查看Color.argb

10
一个八位 Android 十六进制值被称为 ARGB。ARGB 值通常使用八个十六进制数字表示,其中每一对十六进制数字分别代表 alpha、red、green 和 blue 通道的值。例如,80FFFF00 表示50.2%不透明(非预乘)的黄色。
十六进制值中的 80,即十进制中的 128,代表了 50.2% 的 alpha 值,因为 128 约等于最大值 255(FF 十六进制)的 50.2%;要继续解析 80FFFF00 值,第一个 FF 代表 red 可以达到的最大值;第二个 FF 类似于前面,但是代表 green;最后的 00 代表 blue 可以达到的最小值(实际上是没有 blue)。
因此,红色+绿色会产生黄色。在不使用alpha的情况下,可以缩短为六位数字RRGGBB,这就是为什么选择将alpha放在高位的原因。根据上下文,十六进制数字前会加上0x或者井号#

8

这个八位颜色值包含一个透明度级别。

让我们来提取一下。我们将六个值对的RGB值定义为十六进制颜色。

  • 前两个数字代表红色。
  • 接下来两个数字代表绿色。
  • 再接下来两个数字代表蓝色。

如果你想设置透明度级别,那么它就用八位数来定义,形式为ARGB

现在,前两个数字的值代表透明度,其余数字代表RGB值。


0

八位十六进制符号的操作方式与六位符号相同,即提供一个六位十六进制值,并加上井号(#)作为前缀。

不同之处在于,八位符号如其名称所示,添加了两个数字。这两个数字代表了颜色的Alpha通道。

Alpha通道由最后两位数字表示。

这对数字被解释为十六进制数(就像其他数字一样)。值为00代表完全透明的颜色,值为FF代表完全不透明的颜色。

因此,如果要使用完全不透明的颜色,请执行以下操作:Color(0xFF<your-6digit-code>)

例如,如果您有一个六位码:E64526,现在将其转换为八位码:Color(0xFFE64526)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接