我正在开发一个简单的条形图应用程序,它使用静态颜色数组来分割条形颜色。我希望功能可以正常绘制条形,也可以略微透明。
有没有办法以编程方式调整颜色整数,使其略微透明?或者我是否必须静态定义每种颜色的透明版本,然后在我想要透明度时切换到使用这些版本?
答案 0 :(得分:59)
如果您使用支持库,则可以使用ColorUtils.setAlphaComponent(int color, int alpha)
。如果您不使用支持库,那么从其源代码中获取的单行解决方案是:
int res = (color & 0x00ffffff) | (alpha << 24);
答案 1 :(得分:10)
当然......看看Color,有一个功能:
static int argb(int alpha, int red, int green, int blue)
从alpha,red,green,blue组件返回color-int。
因此,您的RGB值可能是静态的,您只需碰撞Alpha值即可获得新的透明版颜色。
答案 2 :(得分:6)
您好,可以使用:
android.support.v4.graphics.ColorUtils#setAlphaComponent
注意:此处的alpha值为0到255,而不是基于%。
还有其他的工艺方法,例如合同和光度计算。
此致
答案 3 :(得分:2)
尝试以下代码
int color = (int)Long.parseLong(your_color, 16);
int r = (color >> 16) & 0xFF;
int g = (color >> 8) & 0xFF;
int b = (color >> 0) & 0xFF;
如果颜色代码有alpha,那么
int alpha= (color >> 24) & 0xFF;
答案 4 :(得分:2)
从最顶层的答案我创建了一个方法来执行此操作:
private Android.Graphics.Color AddTransparencyToColour(Android.Graphics.Color color, int transparancy)
{
return Android.Graphics.Color.Argb(transparancy, color.R, color.G, color.B);
}
还值得注意的是,这可以改为像这样的扩展方法
public static ColorExtensions
{
public static Android.Graphics.Color AddTransparency(this Android.Graphics.Color color, int transparancy)
{
return Android.Graphics.Color.Argb(transparancy, color.R, color.G, color.B);
}
}
关于alpha值,来自MSDN Color.FromArgb:
备注
要创建不透明颜色,请将alpha设置为255.要创建 半透明颜色,将alpha设置为1到254之间的任何值。