2017-01-23 26 views
1

这是一个有点难以解释,但在这里不用...卸下RGB全黑的是透明

我需要让所有的黑掉颜色,使其更像真正的光的方式。

因此,例如,我想RGB(0,0,0)是透明的,而不是黑色和RGB(127,127,127)是白色的,在50%的透明度,而不是灰色的。

目前我使用此:

public static int getHexColor(int[] color) { 
    return android.graphics.Color.rgb(color[0], color[1], color[2]); 
} 

任何想法?

+0

您应该保持颜色相同,并改为使用alpha通道。 – Carcigenicate

+0

尝试用RGBA代替RGB - http://www.css3maker.com/css-3-rgba.html - http://stackoverflow.com/questions/16934796/set-a-rgba-color-to-a - 布局 – Tasos

+0

我将如何整合RGBA摆脱黑色?例如在RGB(127,127,127)处是白色的? –

回答

0

这可以通过使用

Color.parseColor("#AARRGGBB"); 

AA是颜色的不透明度来完成。所以你可以做的是获得你的颜色的十六进制值,并将其中一个不透明度值添加到十六进制的开头。

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 

信用于@Duggu不透明度值。

0

我建议这样的:

1)获取最大的rgbint max = Math.max(r(Math.max(g,b))

如果max == 0跳过步骤2和3

2)由255除以它:float alpha = max/255f;

3)规模由丢失的α的每一个值:r = (int) (r * (1/alpha))

4)创建新的颜色android.graphics.Color.argb(max, r, g, b)