本文分析了Android实现换肤的两种思路。,具体如下:
这里来了解换肤实现及不同方案的差异和使用场合。
一、从功能上划分
1) 软件内置多个皮肤,用户不能修改;
2) 官方提供皮肤下载,用户使用下载的皮肤;
3) 官方提供皮肤制作工具或方法,用户自制皮肤。
二、皮肤定义
软件皮肤包括图标、字体、布局、交互风格等,换肤就是换掉皮肤包括的部分或所有资源。
三、皮肤与APP分离
1)打包皮肤文件
默认格式是apk。例如Launcher,它的桌面皮肤格式是一个apk;
自定义的格式为zip。例如墨迹天气皮肤扩展名是mja,搜狗输入法的皮肤扩展名是sga,它们的文件格式实际上都是zip。
四、资源访问
1)apk格式
apk之间读取数据的条件是:有相同签名并且AndroidManifest.xml中配置android:sharedUserId有相同的属性值,这样两个apk运行在同一个进程中,就能互相访问数据了。
方法如下:
a) 应用程序和皮肤程序的AndroidManifest.xml中配置
例如:
复制代码 android:sharedUserId="com.zj"
b) 文件与应用apk中对同一功能的皮肤文件名要一致
例如:应用程序的背景图片路径:Skinresdrawable-hdpiXX.png
那么皮肤apk中的背景图片文件路径也应该是:Skinresdrawable-hdpiXX.png
c)访问资源的方法
复制代码 Context context = createPackageContext("com.zj.skin", Context.CONTEXT_IGNORE_SECURITY);
获取到com.zj.skin对应的Context,通过返回的context对象就可以访问到com.zj.skin中的任何资源。










