說起Android的動态換膚方案,可謂是人雲亦雲,各有各的方法,魚龍混雜,我實在是參考不來一個好的換膚方案。
于是準備自己搞一個。
在這裡我是拒絕寫多個style實作換膚的
那麼隻能用Java代碼來實作(話說這樣是不是有點難度啊,答案是否定的,難倒是不難,就是稍微麻煩點)
首先簡述一下整體的思路:
1.在Activity中的onCreate中,檢查目前設定的theme樣式(随意用什麼方式實作存儲,主要是拿到目前設定的樣式)
2.開始setContentView,這裡就要進行判斷和語句分支了:if(mode1){...}else if(mode2){...},開始使用代碼的方式為布局設定顔色等
3.新增 reloadView 接口,這樣做的目的是在使用者切換主題後重新設定布局顔色等,實作動态切換主題。
這樣做的确是個不錯的方法(個人感覺
),但是如果Activity中有一個listView,也可能有很多層嵌套的chilView,這樣的話就有一些麻煩,每一個view都需要準備兩種主題。。。。反正就是這樣,動态換膚本來就是這麼繁瑣
Activity的問題解決了,可是Activity裡還嵌套了Fragment怎麼破?
别急,先看思路:
還是一樣的套路,Fragment中新增ReloadView方法,目的也是起到一個重新整理的作用,當宿主Activity被執行ReloadView方法時,也應當通知目前活動在Fragment棧中的對象,并調用Fragment中的ReloadView方法,執行動态換膚。。。
以上思路可以快速解決動态換膚,謝謝觀看~