我正在为我的app小部件实现一个wigdget透明度选项,尽管我在修改十六进制颜色值时遇到了一些麻烦。作为十六进制颜色透明度的全新,我搜索了一下,虽然我找不到我的问题的具体答案。
我想用十六进制颜色设置透明度,所以让我说我的十六进制颜色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。
- 100% - FF
- 95% - F2
- 90% - E6
- 85% - D9
- 80% - CC
- 75% - 高炉
- 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
(资源)
简短的回答
您可以看到百分比的完整表格到十六进制值和 跑 在这个游乐场的代码 https://play.golang.org/p/l1JaPYFzDkI 。
伪代码的简短解释
十六进制值的百分比
- 十进制 =百分比* 255/100。例如:十进制= 50 * 255/100 = 127.5
- 兑换 十进制 到十六进制值。例如:十进制127.5 = 7 * 161 + 15 =十六进制7F
十六进制值为百分比
- 将hexaxdecimal值转换为decimal。例如:D6 = 13 * 161 + 6 = 214
- 百分比=(十进制值)* 100 / 255.例如:214 * 100/255 = 84%
转换十进制<=>十六进制的更多信息
答案很长:如何在脑海中计算
这个问题可以通过一般来解决 交叉乘法。
我们有一个百分比(范围从0到100)和另一个数字(范围从0到255)然后转换为十六进制。
- 100 <==> 255(十六进制FF)
- 0 <==> 0(十六进制00)
1%
- 1 * 255/100 = 2,5
- 2,5的六分之一是 2 如果你把它围起来。
2%
- 2 * 255/100 = 5
- 在hexa中是5 五 。
最佳答案中的表格给出了5%的逐步百分比。
如何计算你头脑中的数字?因为 2.5 递增,第一个加2,下一个加3
- 95% - F2 //开始
- 96% - F4 //将2添加到F2
- 97% - F7 //加3。或F2 + 5 = F7
- 98% - F9 //加2
- 99% - FC //在hexa中添加3. 9 + 3 = 12:C
- 100% - FF //加2
我更喜欢教如何找到解决方案而不是交桌子
给一个人一条鱼,你喂他一天;教人钓鱼和钓鱼
你喂他一辈子
颜色十六进制表示法如下:#AARRGGBB
你应该先看看如何 十六进制 作品。你最多可以写FF。
该图表未显示百分比。 “#90”不是“90%”。
该图表显示十六进制到十进制的转换。十六进制数90(通常表示为0x90)等于十进制数144。
十六进制数字是base-16,因此每个数字都是0到F之间的值。双字节十六进制值的最大值(例如颜色的透明度)是0xFF,或十进制的255。因此100%是0xFF。
我为Android应用程序构建了这个小帮助方法,可能会有用:
/**
* @param originalColor color, without alpha
* @param alpha from 0.0 to 1.0
* @return
*/
public static String addAlpha(String originalColor, double alpha) {
long alphaFixed = Math.round(alpha * 255);
String alphaHex = Long.toHexString(alphaFixed);
if (alphaHex.length() == 1) {
alphaHex = "0" + alphaHex;
}
originalColor = originalColor.replace("#", "#" + alphaHex);
return originalColor;
}
在谷歌搜索上试试这个(或者 点击这里)
255 * .2 to hex
它会产生 0x33
结果是。
但是,谷歌不会舍入值,因此您只能使用1位乘数。如果你想使用说.85,你必须首先获得255 * .85的舍入值,然后输入 (rounded-value here) to hex
在谷歌搜索。