其實,最近在項目中一直有一個問題困擾著我,為什么我的app顏色突然就全變成透明的了。是手機出問題了嗎,顏色給丟了??測試問我這個問題,我還真是說不上的所以然來,只能說是機型問題了。嘿嘿。因為不斷的在需求,所以也沒有顧得上來管這個問題。
然后今天想起這個問題。就自己點了點測試了一下。其實是當點進了某一個特定的頁面,然后在退出這個頁面,其他所以頁面的顏色都丟失了。為什么呢??不解啊。
上網查了一下。發現還真有這個問題,
detailTitle.getBackground().setAlpha(30);
竟然是因為設置了透明度這個屬性
查了些資料才發現,導致本文所說問題的原因是:默認情況下,所有的加載同一資源的實例都共享一個共用的狀態,如果你更改一個實例的狀態,其余的實例都會接收到相同的通知。所以使用getBackground()獲取到程序主色調資源(該主色調在colors.xml中定義)后,setAlpha(0)就將該資源的值修改為了透明,所以之后在程序中所有引用該資源的地方都變為了透明。getBackground()慎用啊,改一處就全改了。。。
局中多個控件同時使用一個資源的時候,這些控件會共用一個狀態 如果你改變了一個控件的狀態,其他的控件都會接收到相同的通知。這時我們可以使用mutate()方法使該控件狀態不定,這樣不定狀態的控件就不會共享自己的狀態了
getBackground().mutate().setAlpha(30); 醬紫。