Android 中的十六进制颜色有时是 8 位数字。如何? #FFFFFF 和 #FFFFFF00 有啥区别

Posted

技术标签:

【中文标题】Android 中的十六进制颜色有时是 8 位数字。如何? #FFFFFF 和 #FFFFFF00 有啥区别【英文标题】:Hex Colors in Android are some times 8 digits. How? What is the difference between #FFFFFF and #FFFFFF00Android 中的十六进制颜色有时是 8 位数字。如何? #FFFFFF 和 #FFFFFF00 有什么区别 【发布时间】:2011-10-18 02:27:57 【问题描述】:

我有时会在示例中看到 android 中的着色是 #FF191919。我的意思是 8 位十六进制数。但它应该只是一个 6 位数字。它们有什么关系?如果我想将 6 位数字转换为 8 位数字。怎么做?我的意思是将 #424242 转换为 8 位数字着色?请让我知道详情。感谢您的时间和帮助。

【问题讨论】:

【参考方案1】:

额外的 2 位数字用于定义颜色透明度或 alpha 通道。

Android 使用 ARGB format(或您在示例中使用的 AARRGGBB)

有关更多(Android 特定)信息,请查看颜色documentation

【讨论】:

是否有一个好的程序可以在输入所有 8 位数字后显示颜色? 有很多:任何自尊的绘图应用程序都接受 RGBA 输入并显示结果颜色。或搜索“rgb 颜色选择器”或“rgb 色轮”以查找提供此服务的网站。 (注意:字母数字并不是很有趣,因为它们定义了透明度并且不影响颜色) 仅回答并不能清楚地说明哪些是额外的 2 位数字。前两个?最后两个?中间某处的两位数? 'extra 2 digits' 建议附加(最后两个),但我会更新答案以使其明确和正确【参考方案2】:

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

【讨论】:

所以例如#FF000000#000000 相同,只是纯黑色?【参考方案3】:

8 位十六进制是ARGB 颜色。它与通常的RGB 相同,但提供了一个额外的 Alpha 通道。

RGB 中的#RRGGBB 与 ARGB 中的#00RRGGBB 相同。也可以看看Color.argb。

【讨论】:

【参考方案4】:

8 位 Android HEx 称为 aRGB。 aRGB 值通常使用 8 个十六进制数字表示,每对十六进制数字分别代表 Alpha、Red、Green 和 Blue 通道的值。例如 80FFFF00 表示 50.2% 不透明(非预乘)黄色。十六进制值 80,即十进制的 128,表示 50.2% 的 alpha 值,因为 128 大约是最大值 255(FF hex)的 50.2%;继续破译80FFFF00的值,第一个FF代表红色能有的最大值;第二个 FF 与前一个相同,但为绿色;最后的 00 表示蓝色可以具有的最小值(实际上 - 没有蓝色)。因此红色+绿色产生黄色。在不使用 alpha 的情况下,可以将其缩短为 6 位 RRGGBB,这就是为什么选择将 alpha 放在最高位的原因。根据上下文,将 0x 或数字符号 (#)[1] 放在十六进制数字之前。

【讨论】:

【参考方案5】:

用 alpa 级别定义的 8 位颜色

让我们将所有我们定义的十六进制颜色提取为 6 个值对,每对 rgb 2 位

第一个 2 位代表红色,第 2 个 2 位代表绿色,第 3 个 2 位代表蓝色,如果你想设置它的 alpha 级别,那么它用 8 位定义为 ARGB 所以,现在第 1 个 2 位值被定义为alpha 和 rest 用于 RGB

【讨论】:

以上是关于Android 中的十六进制颜色有时是 8 位数字。如何? #FFFFFF 和 #FFFFFF00 有啥区别的主要内容,如果未能解决你的问题,请参考以下文章

颜色模式中8位,16位,24位,32位色彩是啥意思

十六进制颜色码的对照表

ARGB Hex颜色在css html中不起作用

N个十六进制数字对应多少位?

转换为 3 位十六进制颜色代码

如何将 3 位 HTML 十六进制颜色转换为 6 位 flex 十六进制颜色