2013-09-28 140 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 –