(9)launcher3 之 外部 更换主题Theme APP demo 实现原理以及demo

先说下我的思路:

luancher3里面更换图标的逻辑如下:

先从APP资源包里查询--数据库查询--其他地方查询ICON

因此,我们只需要把 从数据库获取ICON 代码提前到  从APP资源包提取即可。


再来我们外部APP只需对Launcher.db的 ICON字段进行 添加图标,即可。再通知桌面去更新图标,即可完成整个桌面的 图标自动更换的效果。


这样做的优点:

代码修改量少,主题的APP无须跟Launcher3这个桌面APP有任何关联。相当于外部应用。

(前面第8我已经稍微简单介绍了下launcher3的内容提供者,需要写入2个权限)


具体思路比较简单清晰。并且实现了。

有需要的可以留言,我可以给demo哈。



读取按钮:

通过内容提供者对Launcher.db数据库进行读取信息并解析成List对象,方便后面进行遍历更新图标到数据库。


更新按钮:点击后,将根据前面获取到的APP的ID进行指定更新Launcher.db的 ICON数据库。在这里我们会将SD卡里面ICON转为字节数组,进行保存到数据库。


应用主题:通知桌面去刷新。(这一步其实不用做的,因为当你进行第二步,更新操作的时候,访问数据库时候,桌面的数据库注册了观察者监听数据库发生改变,则进行workspace图标的更新。)



(9)launcher3 之 外部 更换主题Theme APP demo 实现原理以及demo_第1张图片


主题来源:MIUI主题资源包解压而来:

资源结构目录如下

手机SD卡根目录:_theme------------------下面包含各个ZIP压缩格式的主题包。

当我们启动主题APP的时候,会自动检测_theme该目录下ZIP文件,如果有存在就进行ZIP解压,并删除原来的ZIP文件,在这里我们进行了资源的解压。

解压目录如下:

icon:放图标资源:目录结构为icon_res_drawble-xhdmi

wallpaper:放的是壁纸2张,一张为锁屏,一张为默认主界面壁纸

preview:放的主题的截图,便于主题市场,进行获取资源显示给用户看。


(以上主题包资源均来自MIUI主题的目录结构。)


(9)launcher3 之 外部 更换主题Theme APP demo 实现原理以及demo_第2张图片



demo点击应用主题后:更换图标演示:

由于只是做测试,所有图标也只是随便替换几个而已。功能实现了,后面的事情就好了。修修补补的事情了。


(9)launcher3 之 外部 更换主题Theme APP demo 实现原理以及demo_第3张图片



你可能感兴趣的:(android,Launcher)