我正在为我的应用程序小部件实现一个小部件透明度选项,尽管我有一些麻烦得到十六进制颜色值正确。完全新的十六进制颜色透明度我搜索了一下,虽然我找不到一个具体的答案,我的问题。

我想通过十六进制颜色来设置透明度假设我的十六进制颜色id为#33b5e5我想让它的透明度为50%。然后我使用“#8033b5e5”,因为80是50%。

我在这里找到了一个有用的图表:http://www.dtp-aus.com/hexadeci.htm。根据这些数据,我得出了这个结论:

0% = #00
10% = #16
20% = #32
30% = #48
40% = #64
50% = #80
60% = #96
70% = #112
80% = #128
90% = #144

当十六进制大于100时,问题就出现了。十六进制颜色码只能有8个符号长,对吗?例如#11233b5e5(80%)崩溃。

我该怎么做才能使我也能使用更高的数字呢?


当前回答

这是一个正确的百分表十六进制值的不透明度。例如,对于50%的白色,你可以使用#80FFFFFF。要从透明度的角度来考虑,可以颠倒百分比的顺序(更不透明=更不透明)。

% Hex
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

(源问题)

其他回答

彩色十六进制表示法如下:#AARRGGBB

A: alpha R:红色 G:绿色 B:蓝色

首先应该看看十六进制是如何工作的。你最多可以写FF。

这个图表没有显示百分比。“#90”不是“90%”。 那个图表显示了十六进制到十进制的转换。十六进制数90(通常表示为0x90)相当于十进制数144。

十六进制数以16为底,因此每个数字都是0到f之间的值。两个字节十六进制值(例如颜色的透明度)的最大值是0xFF,或者十进制的255。因此100%是0xFF。

试试谷歌搜索(或点击这里)

255 * 2到十六进制

它将生成0x33作为结果。

但是,谷歌不能四舍五入值,因此只能使用1位乘数。如果你想使用。85,你必须先得到255 * .85的四舍五入值,然后在谷歌搜索中输入(四舍五入值)到十六进制。

这是一个正确的百分表十六进制值的不透明度。例如,对于50%的白色,你可以使用#80FFFFFF。要从透明度的角度来考虑,可以颠倒百分比的顺序(更不透明=更不透明)。

% Hex
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

(源问题)

我总是来这里检查int/hex的值。因此,我最终在我的java utils类中创建了一个简单的方法。此方法将透明度百分比转换为十六进制值并附加到颜色代码字符串值。

 public static String setColorAlpha(int percentage, String colorCode){
    double decValue = ((double)percentage / 100) * 255;
    String rawHexColor = colorCode.replace("#","");
    StringBuilder str = new StringBuilder(rawHexColor);

    if(Integer.toHexString((int)decValue).length() == 1)
        str.insert(0, "#0" + Integer.toHexString((int)decValue));
    else
        str.insert(0, "#" + Integer.toHexString((int)decValue));
    return str.toString();
}

所以,跑龙套。setColorAlpha(30,“#000000”)将给你#4c000000