了解Android上的颜色(六个字符)

时间:2011-03-26 20:28:32

标签: android colors hex transparency

我试图了解Android中的颜色是如何工作的。我将此颜色设置为LinearLayout的背景,并且我得到一个透明的背景灰色:

<gradient android:startColor="#b4555555" android:endColor="#b4555555"
 android:angle="270.0" />

如果我删除最后两个字符(55),我会得到一个纯色,失去透明度。我试图找到一个页面,我可以看到有关此的一些解释,但我找不到它。

10 个答案:

答案 0 :(得分:1153)

Android使用十六进制ARGB值,格式为#AARRGGBB。第一对字母AA代表alpha通道。您必须将十进制不透明度值转换为十六进制值。以下是步骤:

Alpha Hex Value Process

  1. 将您的不透明度作为十进制值并乘以255.因此,如果您有一个50%不透明的块,则十进制值将为.5。例如:.5 x 255 = 127.5
  2. 分数不会转换为十六进制,因此您必须将数字向上或向下舍入到最接近的整数。例如:127.5轮到128; 55.25轮到55.
  3. 在十进制到十六进制转换器中输入您的小数值,例如http://www.binaryhexconverter.com/decimal-to-hex-converter,并转换您的值。
  4. 如果您只返回一个值,请在其前面加上零。例如,如果你试图获得5%的不透明度并且你正在经历这个过程,你将得到十六进制值D.在它前面添加一个零,使它显示为0D。
  5. 这就是你找到alpha通道值的方法。我冒昧地为你整理了一系列价值观。享受!

    十六进制不透明度值

    • 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

答案 1 :(得分:174)

关闭@BlondeFurious的答案,这里有一些Java代码可以将每个十六进制值从100%变为0%alpha:

for (double i = 1; i >= 0; i -= 0.01) {
    i = Math.round(i * 100) / 100.0d;
    int alpha = (int) Math.round(i * 255);
    String hex = Integer.toHexString(alpha).toUpperCase();
    if (hex.length() == 1)
        hex = "0" + hex;
    int percent = (int) (i * 100);
    System.out.println(String.format("%d%% — %s", percent, hex));
}

输出:

100% — FF
99% — FC
98% — FA
97% — F7
96% — F5
95% — F2
94% — F0
93% — ED
92% — EB
91% — E8
90% — E6
89% — E3
88% — E0
87% — DE
86% — DB
85% — D9
84% — D6
83% — D4
82% — D1
81% — CF
80% — CC
79% — C9
78% — C7
77% — C4
76% — C2
75% — BF
74% — BD
73% — BA
72% — B8
71% — B5
70% — B3
69% — B0
68% — AD
67% — AB
66% — A8
65% — A6
64% — A3
63% — A1
62% — 9E
61% — 9C
60% — 99
59% — 96
58% — 94
57% — 91
56% — 8F
55% — 8C
54% — 8A
53% — 87
52% — 85
51% — 82
50% — 80
49% — 7D
48% — 7A
47% — 78
46% — 75
45% — 73
44% — 70
43% — 6E
42% — 6B
41% — 69
40% — 66
39% — 63
38% — 61
37% — 5E
36% — 5C
35% — 59
34% — 57
33% — 54
32% — 52
31% — 4F
30% — 4D
29% — 4A
28% — 47
27% — 45
26% — 42
25% — 40
24% — 3D
23% — 3B
22% — 38
21% — 36
20% — 33
19% — 30
18% — 2E
17% — 2B
16% — 29
15% — 26
14% — 24
13% — 21
12% — 1F
11% — 1C
10% — 1A
9% — 17
8% — 14
7% — 12
6% — 0F
5% — 0D
4% — 0A
3% — 08
2% — 05
1% — 03
0% — 00

JavaScript版本如下:

var text = document.getElementById('text');
for (var i = 1; i >= 0; i -= 0.01) {
    i = Math.round(i * 100) / 100;
    var alpha = Math.round(i * 255);
    var hex = (alpha + 0x10000).toString(16).substr(-2).toUpperCase();
    var perc = Math.round(i * 100);
    text.innerHTML += perc + "% — " + hex + " (" + alpha + ")</br>";
}
<div id="text"></div>


您也可以只使用Google“数字到十六进制”,其中“数字”是0到255之间的任何值。

答案 2 :(得分:164)

如果您提供6个十六进制数字,则表示RGB(红色,绿色和蓝色的每个值为2个十六进制数字)。

如果你提供8个十六进制数字,它是一个ARGB(分别为alpha,red,green和blue的每个值分别为2个十六进制数字)。

因此,通过删除最后的55,你将从A = B4,R = 55,G = 55,B = 55(大部分为透明灰色)变为R = B4,G = 55,B = 55(a完全不透明的暗粉红色)。

有关支持的格式,请参阅"Color" documentation

答案 3 :(得分:33)

Android Material Design

这些是用于设置文字颜色不透明度级别的转换。

  • 100%:FF
  • 87%:DE
  • 70%:B3
  • 54%:8A
  • 50%:80
  • 38%:61
  • 12%:1F

浅色背景上的深色文字

enter image description here

  • 主要文字:DE000000
  • 辅助文字:8A000000
  • 已停用的文字,提示文字和图标:61000000
  • 分隔符:1F000000

深色背景上的白色文字

enter image description here

  • 主要文字:FFFFFFFF
  • 辅助文字:B3FFFFFF
  • 已停用的文字,提示文字和图标:80FFFFFF
  • 分隔符:1FFFFFFF

另见

  • 查找任何百分比here

答案 4 :(得分:16)

在Android上,颜色可以指定为RGB或ARGB。

http://en.wikipedia.org/wiki/ARGB

在RGB中,每种颜色(红色,绿色,蓝色)都有两个字符,而在ARGB中,您有另外两个字符用于Alpha通道。

所以,如果你有8个字符,它是ARGB,前两个字符指定alpha通道。如果你删除前两个字符,它只有RGB(纯色,没有alpha /透明度)。如果要在Java源代码中指定颜色,则必须使用:

int Color.argb (int alpha, int red, int green, int blue)

alpha  Alpha component [0..255] of the color
red    Red component [0..255] of the color
green  Green component [0..255] of the color
blue   Blue component [0..255] of the color

参考: argb

答案 5 :(得分:7)

8位十六进制颜色值是ARGB(Alpha,红色,绿色,蓝色)的表示,而6位数值仅假设100%不透明度(完全不透明)并且仅定义RGB值。因此,要使其完全不透明,您可以使用#FF555555,或只使用#555555。每个2位十六进制值是一个字节,表示0-255的值。

答案 6 :(得分:0)

在Android上,颜色可以采用以下格式声明

#AARRGGBB

AA-是我们最感兴趣的部分,代表alpha通道

RR GG BB-分别是红色,绿色和蓝色通道

现在,为了增加颜色的透明度,我们需要在其前面加上代表alpha(透明度)的十六进制值。

例如,如果要将80%的透明度值设置为黑色(#000000,则需要在其前面加上CC,因此,我们最终得到以下颜色资源{{1 }}。

您可以在我的博客上详细了解它 https://androidexplained.github.io/android/ui/2020/10/12/hex-color-code-transparency.html

答案 7 :(得分:0)

十六进制代码中的颜色写为

# AA RR GG BB
# Alpha 红色 绿色 蓝色

对于每个组 (AA,RR,GG,BB) 可能的值是:
-> 00 到 FF in Hex ,即 0 到 255 十进制

所以要改变颜色的Alpha/AA/Transparency,你只需要改变由AA组表示的十六进制字符串中的前两个十六进制字符

对于 50% -> 255 x 0.50= 128(近似/四舍五入)
并转换 128 到十六进制 = 08

So Green #00FF0050% Alpha/透明度 将是 #0800FF00

答案 8 :(得分:0)

使用这个表(我更喜欢把它放在colors.xml中以便快速搜索)

<!--Percent to hex conversion table-->
<!--%  0  1  2  3  4  5  6  7  8  9-->
<!--0 00 03 05 08 0A 0D 0F 12 14 17-->
<!--1 19 1C 1F 21 24 26 29 2B 2E 30-->
<!--2 33 36 38 3B 3D 40 42 45 47 4A-->
<!--3 4D 4F 52 54 57 59 5C 5E 61 63-->
<!--4 66 69 6B 6E 70 73 75 78 7A 7D-->
<!--5 80 82 85 87 8A 8C 8F 91 94 96-->
<!--6 99 9C 9E A1 A3 A6 A8 AB AD B0-->
<!--7 B3 B5 B8 BA BD BF C2 C4 C7 C9-->
<!--8 CC CF D1 D4 D6 D9 DB DE E0 E3-->
<!--9 E6 E8 EB ED F0 F2 F5 F7 FA FC-->

答案 9 :(得分:-1)

在新的chrome版本(可能是67.0.3396.62)中,CSS十六进制颜色可以使用此模型显示,

例如:

div{
  background-color:#FF00FFcc;
}

cc 是不透明的,但旧的chrome不支持该mod