在我們平常開發的時候會有許多狀态按鈕,比如state_pressed,android:state_checked,或者就正常狀态等等,我們做這樣的效果通常需要三個檔案,一張是按下的圖檔,一張是正常狀态的圖檔,一張是管理它們的selector檔案,如果在不斷更新疊代的過程中出現了很多這樣的按鈕,而且它們的顔色什麼的都不一樣,那我們的res/drawable檔案夾下就會出現很多個這樣的組合檔案,導緻我們的程式越來越大、越來越大,這肯定不是我們想看到的。
那麼,我現在要拿出什麼來解決這個問題呢?就是動态的更改它們的屬性,把所有的工作都放在代碼裡面,減少selector.xml檔案的産生:
我們在寫屬性的時候盡量要使用這樣的方式(如果美工給了圖的話,盡量讓提供顔色值就可以了,不要做那麼多圖):
布局檔案:
這個xml檔案的正常顯示效果是:

效果還是挺不錯的,接下來我們要動态改變它的效果,怎麼做呢:
方法就是這樣,我們再來看看最後的實作效果:
怎麼樣,效果實作了我們需要的。
最後,貼上一個抽取出來的工具類:
有疑問歡迎留言。