这种实现是直接读取了外部资源文件,在程序运行时通过代码显示的替换界面的背景资源。
这种方式的优点是:皮肤资源的格式定义很随意可以是zip也可以是自定义的格式,只要程序中能够解析到资源就行,缺点是需要读取并解析文件,导致效率上会比较差.
3) 皮肤资源存在于主程序之类的APK中,即实现了APK的拆分. 这里类似于浏览器与插件的关系. 当考虑应用程序需要扩展时,则需要采用本方式实现.,这不仅仅体现在换肤的APK中.
典型应用: 手机QQ换肤的实现方式
Q的皮肤是一个无界面APK应用,这个皮肤应用中的资源和主程序的资源命名一致,通过主程序和皮肤程序共享进程实现主程序对皮肤程序中资源的访问,在程序运行时通过代码显示指定皮肤资源,缺点是在主程序中每个activity要增加复杂的使用哪种皮肤逻辑,优点是效率比较快,且使应用程序具有了良好的扩展性,降低了程序的耦合性. 包括其他类似的扩展功能,都可以利用此方式实现.
4) 官方提供皮肤制作工具或方法,用户可自制皮肤:
大致分为两种情况:
a. 应用程序主列表为一个GridView,用户可通过在设置中选择背景的颜色和按钮的风格. 直接进行替换即可.
b. 另外一种是有可视化带向导的工具。用户只要自己找一些图片、修改文字的字体替换就可以了。用户可以上传自制的皮肤,提供其他用户下载. 一般都是打包为.zip格式的,扩展名可由公司需求自定义. 例如墨迹天气皮肤扩展名是mja,搜狗输入法的皮肤扩展名是sga,它们的文件格式实际上都是zip。之后的应用就和第二种换肤方式类似了.
这种方式优点是:使用户有参与感,自由度较高。用户可根据自己的喜好定制软件的皮肤。
5) 改写SDK的Resource类:
此处提供一些思路:
在Android系统中,资源主要指图片和MP3类型的文件,也是用户UI包含的所有元素。谷歌在设计Android系统时,将UI界面和逻辑代码分开组建:界面设计通过XML的形式描述,具体的程序和应用逻辑则通过代码来实现;前端工程师只负责HTML和CSS的设计与架构,后端工程师则专门考虑JSP和Java的代码执行.
资源访问在Android性能架构中处于何种地位?在进行Android开发时,开发者经常用到Framework提供的资源包Framework.jar与Framework-res.apk,以及与核心资源相关的组件“Resource Manager”文件系统。
APK本身是一个简单的文件格式,也是一个压缩文件包。通过解压文件包可以释放APK文件:首先需要APK的原数据Meta INF、Manifest以及RES目录。一部分包含图片资源的应用,在资源释放时也会用到Layout。










