1. 程式人生 > >(9)launcher3 之 外部 更換主題Theme APP demo 實現原理以及demo

(9)launcher3 之 外部 更換主題Theme APP demo 實現原理以及demo

解壓 work ace fontsize 思路 con 鎖屏 解壓文件夾 更新

先說下我的思路:

luancher3裏面更換圖標的邏輯例如以下:

先從APP資源包裏查詢--數據庫查詢--其它地方查詢ICON

因此,我們僅僅須要把 從數據庫獲取ICON 代碼提前到 從APP資源包提取就可以。


再來我們外部APP僅僅需對Launcher.db的 ICON字段進行 加入圖標。就可以。

再通知桌面去更新圖標。就可以完畢整個桌面的 圖標自己主動更換的效果。


這樣做的長處:

代碼改動量少,主題的APP無須跟Launcher3這個桌面APP有不論什麽關聯。相當於外部應用。

(前面第8我已經略微簡介了下launcher3的內容提供者,須要寫入2個權限)


詳細思路比較簡單清晰。而且實現了。

有須要的能夠留言,我能夠給demo哈。



讀取button:

通過內容提供者對Launcher.db數據庫進行讀取信息並解析成List<shotCupInfo>對象,方便後面進行遍歷更新圖標到數據庫。


更新button:點擊後。將依據前面獲取到的APP的ID進行指定更新Launcher.db的 ICON數據庫。在這裏我們會將SD卡裏面ICON轉為字節數組,進行保存到數據庫。


應用主題:通知桌面去刷新。(這一步事實上不用做的,由於當你進行第二步,更新操作的時候,訪問數據庫時候,桌面的數據庫註冊了觀察者監聽數據庫發生改變。則進行workspace圖標的更新。)



技術分享


主題來源:MIUI主題資源包解壓而來:

資源結構文件夾例如以下

手機SD卡根文件夾:_theme------------------以下包括各個ZIP壓縮格式的主題包。

當我們啟動主題APP的時候,會自己主動檢測_theme該文件夾下ZIP文件,假設有存在就進行ZIP解壓,並刪除原來的ZIP文件。在這裏我們進行了資源的解壓。

解壓文件夾例如以下:

icon:放圖標資源:文件夾結構為icon_res_drawble-xhdmi

wallpaper:放的是壁紙2張。一張為鎖屏,一張為默認主界面壁紙

preview:放的主題的截圖。便於主題市場,進行獲取資源顯示給用戶看。


(以上主題包資源均來自MIUI主題的文件夾結構。)


技術分享



demo點擊應用主題後:更換圖標演示:

因為僅僅是做測試,全部圖標也僅僅是隨便替換幾個而已。功能實現了。後面的事情就好了。

修修補補的事情了。


技術分享



(9)launcher3 之 外部 更換主題Theme APP demo 實現原理以及demo