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

发布于 2024-10-26 19:56:00 字数 287 浏览 2 评论 0原文

我想了解 Android 中颜色的工作原理。我将此颜色设置为我的 LinearLayout 的背景,并且得到具有一定透明度的灰色背景:

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

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

I am trying to understand how colors work in Android. I have this color set as the background of my LinearLayout, and I get a background gray with some transparency:

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

If I remove the last two characters (55) I get a solid color, losing the transparency. I was trying to find a page where I can see some explanation about this, but I couldn't find it.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(10

极致的悲 2024-11-02 19:56:00

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

Alpha 十六进制值处理

  1. 将不透明度作为十进制值,并将其乘以 255。因此,如果您有一个不透明度为 50% 的块,则十进制值为 0.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。

这就是找到 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

Android uses hexadecimal ARGB values, which are formatted as #AARRGGBB. That first pair of letters, the AA, represent the alpha channel. You must convert your decimal opacity values to a hexadecimal value. Here are the steps:

Alpha Hex Value Process

  1. Take your opacity as a decimal value and multiply it by 255. So, if you have a block that is 50% opaque the decimal value would be .5. For example: .5 x 255 = 127.5
  2. The fraction won't convert to hexadecimal, so you must round your number up or down to the nearest whole number. For example: 127.5 rounds up to 128; 55.25 rounds down to 55.
  3. Enter your decimal value in a decimal-to-hexadecimal converter, like http://www.binaryhexconverter.com/decimal-to-hex-converter, and convert your values.
  4. If you only get back a single value, prefix it with a zero. For example, if you're trying to get 5% opacity and you're going through this process, you'll end up with the hexadecimal value of D. Add a zero in front of it so it appears as 0D.

That's how you find the alpha channel value. I've taken the liberty to put together a list of values for you. Enjoy!

Hex Opacity Values

  • 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
烂柯人 2024-11-02 19:56:00

离开@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 之间的任何值。

Going off the answer from @BlondeFurious, here is some Java code to get each hexadecimal value from 100% to 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));
}

Output:

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

A JavaScript version is below:

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>


You can also just Google "number to hex" where 'number' is any value between 0 and 255.

菊凝晚露 2024-11-02 19:56:00

如果您提供 6 个十六进制数字,则表示 RGB(红、绿、蓝各值各 2 个十六进制数字)。

如果您提供 8 个十六进制数字,则它是 ARGB(分别对应 alpha、红色、绿色和蓝色的每个值 2 个十六进制数字)。

因此,通过删除最后的 55,您将从 A=B4、R=55、G=55、B=55(大部分透明的灰色)更改为 R=B4、G=55、B=55(完全非- 透明暗色小指)。

有关支持的格式,请参阅“颜色”文档

If you provide 6 hex digits, that means RGB (2 hex digits for each value of red, green and blue).

If you provide 8 hex digits, it's an ARGB (2 hex digits for each value of alpha, red, green and blue respectively).

So by removing the final 55 you're changing from A=B4, R=55, G=55, B=55 (a mostly transparent grey), to R=B4, G=55, B=55 (a fully-non-transparent dusky pinky).

See the "Color" documentation for the supported formats.

阿楠 2024-11-02 19:56:00

注意:此答案可能不是最新的 Material Design 规范。

Android Material Design

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

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

浅色背景上的深色文本

在此处输入图像描述

  • 主要文本:DE000000
  • 辅助文本:8A000000
  • 禁用文本、提示文本和图标:61000000
  • 分隔线:1F000000

深色背景上的白色文本

在此处输入图像描述< /a>

  • 主要文本:FFFFFFFF
  • 辅助文本:B3FFFFFF
  • 禁用文本、提示文本和图标:80FFFFFF
  • 分隔符:1FFFFFFF代码>

Note: This answer may not be up-to-date with current material design specs.

Android Material Design

These are the conversions for setting the text color opacity levels.

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

Dark text on light backgrounds

enter image description here

  • Primary text: DE000000
  • Secondary text: 8A000000
  • Disabled text, hint text, and icons: 61000000
  • Dividers: 1F000000

White text on dark backgrounds

enter image description here

  • Primary text: FFFFFFFF
  • Secondary text: B3FFFFFF
  • Disabled text, hint text, and icons: 80FFFFFF
  • Dividers: 1FFFFFFF
山有枢 2024-11-02 19:56:00

在 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

On Android, colors are can be specified as RGB or ARGB.

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

In RGB you have two characters for every color (red, green, blue), and in ARGB you have two additional chars for the alpha channel.

So, if you have 8 characters, it's ARGB, with the first two characters specifying the alpha channel. If you remove the leading two characters it's only RGB (solid colors, no alpha/transparency). If you want to specify a color in your Java source code, you have to use:

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

Reference: argb

标点 2024-11-02 19:56:00

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

An 8-digit hex color value is a representation of ARGB (Alpha, Red, Green, Blue), whereas a 6-digit value just assumes 100% opacity (fully opaque) and defines just the RGB values. So to make this be fully opaque, you can either use #FF555555, or just #555555. Each 2-digit hex value is one byte, representing values from 0-255.

2024-11-02 19:56:00

使用这个表(我更喜欢把它放在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-->

Use this table (I prefer to put it in colors.xml for fast search)

<!--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-->
暮色兮凉城 2024-11-02 19:56:00

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

例如:

div{
  background-color:#FF00FFcc;
}

cc是不透明度,但旧的chrome不支持该模式

at new chrome version (maybe 67.0.3396.62) , CSS hex color can use this model display,

eg:

div{
  background-color:#FF00FFcc;
}

cc is opacity , but old chrome not support that mod

∝单色的世界 2024-11-02 19:56:00

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

#AARRGGBB

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

RR GG BB - 红色、绿色和分别为蓝色通道

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

例如,如果您想将 80% 透明度值设置为黑色 (#000000),则需要在其前面添加 CC,因此我们最终会得到以下颜色资源#CC000000

您可以在我的博客上阅读更多详细信息
https://androidexplained.github。 io/android/ui/2020/10/12/hex-color-code-transparency.html

On Android the color can be declared in the following format

#AARRGGBB

AA - is the bit that’s of most interest to us, it stands for alpha channel

RR GG BB - red, green & blue channels respectively

Now in order to add transparency to our color we need to prepend it with hexadecimal value representing the alpha (transparency).

For example if you want to set 80% transparency value to black color (#000000) you need to prepend it with CC, as a result we end up with the following color resource #CC000000.

You can read about it in more detail on my blog
https://androidexplained.github.io/android/ui/2020/10/12/hex-color-code-transparency.html

遇见了你 2024-11-02 19:56:00

十六进制代码的颜色写为

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

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

因此要更改颜色的 Alpha/AA/透明度,只需更改前两个十六进制AA组代表的十六进制字符串中的字符

50% ->
            
255 x 0.50= 128(大约/四舍五入)
并转换
           
128 转十六进制
= 08

所以绿色 #00FF0050% Alpha/透明度 将是 #0800FF00

A color in hexadecimal code is written as

# AA       RR    GG      BB
# Alpha  Red  Green  Blue

And for each group (AA,RR,GG,BB) possible values are :
-> 00 to FF in Hex , i.e. 0 to 255 in decimal

So to change the Alpha/AA/Transparency of the color, you just have to change first two Hexadecimal Characters in the Hex String which is represented by the AA group

For 50% ->

255 x 0.50= 128 (approx/rounded)
And convert

128 to Hex
= 08

So Green #00FF00 with 50% Alpha/Transparency will be #0800FF00

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文