【发布时间】:2024-04-19 15:50:01
【问题描述】:
我有时会在示例中看到 Android 中的着色是 #FF191919。我的意思是 8 位十六进制数。但它应该只是一个 6 位数字。它们有什么关系?如果我想将 6 位数字转换为 8 位数字。怎么做?我的意思是将 #424242 转换为 8 位数字着色?请让我知道详情。感谢您的时间和帮助。
【问题讨论】:
标签: android android-layout colors hex android-canvas
我有时会在示例中看到 Android 中的着色是 #FF191919。我的意思是 8 位十六进制数。但它应该只是一个 6 位数字。它们有什么关系?如果我想将 6 位数字转换为 8 位数字。怎么做?我的意思是将 #424242 转换为 8 位数字着色?请让我知道详情。感谢您的时间和帮助。
【问题讨论】:
标签: android android-layout colors hex android-canvas
额外的 2 位数字用于定义颜色透明度或 alpha 通道。
Android 使用 ARGB format(或您在示例中使用的 AARRGGBB)
有关更多(Android 特定)信息,请查看颜色documentation
【讨论】:
前两个字符代表 alpha(透明度)值,其中FF 完全可见。这称为 aRGB。
【讨论】:
#FF000000 与#000000 相同,只是纯黑色?
8 位十六进制是ARGB 颜色。它与通常的RGB 相同,但提供了一个额外的 Alpha 通道。
RGB 中的#RRGGBB 与 ARGB 中的#00RRGGBB 相同。也可以看看Color.argb。
【讨论】:
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] 放在十六进制数字之前。
【讨论】:
用 alpa 级别定义的 8 位颜色
让我们将所有我们定义的十六进制颜色提取为 6 个值对,每对 rgb 2 位
第一个 2 位代表红色,第 2 个 2 位代表绿色,第 3 个 2 位代表蓝色,如果你想设置它的 alpha 级别,那么它用 8 位定义为 ARGB 所以,现在第 1 个 2 位值被定义为alpha 和 rest 用于 RGB
【讨论】: