我正在开发一个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位代码使用我的代码!!!!
答案 0 :(得分:2)
前2位数字(ff)是alpha。 ff表示完全不透明,00表示完全透明。 在xml中如果使用#00ff00,则将其修改为ff00ff00(自动添加前导ff)。 在代码中,如果你有00ff00它会被翻译为0000ff00,所以完全透明。 如果你有一个十六进制的代码
color = color | 0xff000000;
使其完全不透明