2013-09-28 99 views
1

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

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

没有足够的信息来帮助你。 – JoxTraex

+0

添加一些相关的代码。 –

+0

我编辑的信息能够帮助您了解我的问题吗? –

回答

3

前两位数字(ff)是阿尔法。 ff表示完全不透明,00表示完全透明。 在xml中如果使用#00ff00,它将被修改为ff00ff00(自动添加前导ff)。 在代码中,如果您有00ff00,它将被转换为0000ff00,因此完全透明。 如果在十六进制代码做

color = color | 0xff000000; 

,使其完全不透明

+0

非常感谢@yoah –