Android的十六进制代码问题

时间:2013-09-28 05:34:25

标签: android

我正在开发一个Android应用,我试图通过编码动态添加渐变到按钮。如果我静态地在xml中应用渐变,则6位十六进制代码可以工作;但是当我尝试从java更改渐变时不起作用。在这种情况下,8位十六进制代码有效。 请帮我解决这个问题。

public void setGradient(btnGradientStartColor,btnGradientEndColor,buttonUnderAction) {

    int colors[] = { btnGradientStartColor, btnGradientEndColor };
    for(int x:colors){
        System.out.println("value in colors[]:"+x);
    }
    GradientDrawable gradientDrawable = new GradientDrawable(GradientDrawable.Orientation.BL_TR, colors);
    btnUnderAction.setBackgroundDrawable(gradientDrawable);

}

我将十六进制颜色代码和按钮ID传递给此方法。这里,如果我传递6位十六进制代码,它不起作用,但8位十六进制代码工作。       例如0xff255779和0xffa6c0cd工作但0x30196E和0x3498db不起作用。

有没有办法将6位十六进制代码转换为8位数代码,或者我可以使用6位代码使用我的代码!!!!

1 个答案:

答案 0 :(得分:2)

前2位数字(ff)是alpha。 ff表示完全不透明,00表示完全透明。 在xml中如果使用#00ff00,则将其修改为ff00ff00(自动添加前导ff)。 在代码中,如果你有00ff00它会被翻译为0000ff00,所以完全透明。 如果你有一个十六进制的代码

color = color | 0xff000000;

使其完全不透明