1. 程式人生 > >Android無縫切換主題,動態換膚

Android無縫切換主題,動態換膚

說起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方法,執行動態換膚。。。


以上思路可以快速解決動態換膚,謝謝觀看~