以编程方式使颜色更透明

时间:2013-06-21 14:20:44

标签: android colors transparent

我正在开发一个简单的条形图应用程序,它使用静态颜色数组来分割条形颜色。我希望功能可以正常绘制条形,也可以略微透明。

有没有办法以编程方式调整颜色整数,使其略微透明?或者我是否必须静态定义每种颜色的透明版本,然后在我想要透明度时切换到使用这些版本?

5 个答案:

答案 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之间的任何值。