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 有啥区别的主要内容,如果未能解决你的问题,请参考以下文章