转载请标明出处:http://blog.csdn.net/EdisonChang/article/details/50021467

国内已经有很多android应用软件支持个性化皮肤定制功能,比如QQ,墨迹天气、360手机助手等。android 原生系统并没有提供专门的换肤api,这一点可能与不同使用人群的文化差异有关。

譬如一些国外的app在页面设计上都比较简洁,更注重功能;而国内一些好的应用会在风格设计和交互上加入更多的情感因素,注重体验和交互功能,换肤就是其中一种实现手段。

换肤,可以简单的认为就是动态的改变应用资源,包括改变图片、颜色、文字、尺寸等。小至调用View的setTextColor 方法简单改变不同场景下的字符串颜色,大至android rom UI库的定制等,都属于换肤的范畴。

那么文章要讨论的换肤属于哪个层次呢?文章要讨论的换肤是针对应用程序的动态换肤,不涉及到Rom的UI定制。在写android应用的换肤系列之前,博主参考了很多相关的资料和别人的优秀的经验,加上自己的理解和整理优化,希望能给有相关需要的朋友带来帮助。

这个换肤系列内容比较多,我会按不同的实现方式分成几部分进行介绍,本节主要是介绍目前Android应用程序采用的几种主流换肤方式和相关的一些特点:

(1)资源内置,通过android原生主题来实现程序的内部换肤功能

优点:发挥android 主题style换肤特点,切换便捷 ,在布局文件上就可以根据主题选择不同资源,覆盖面广,基本不需要额外的代码配置;
缺点:灵活度低,如果需要实现多套皮肤方案,需要同时内置,会增大安装包体积,不易扩展

(2)皮肤由压缩包形式提供,动态替换本地资源,这种实现,实际上是程序本身对压缩包资源做了解析,在程序运行时动态替换皮肤

优点:灵活度高,用户可以个性化定制皮肤,程序只负责解析,不需要内置皮肤文件;
缺点:所有资源都是通过代码读取并解析,效率上会比较差,更容易导致内存溢出

(3)皮肤文件以apk格式应用存在,共享进程方式读取资源,同样需要安装,主程序通过包名读取皮肤apk资源并动态替换

优点:不需要程序解析资源文件,效率比较快
缺点:皮肤制作困难,需要和主Apk有同样的签名,使用时资源id必须保持一致,否则读取不到对应的资源文件

(4)皮肤文件以插件apk,宿主apk动态加载

优点:不需要有签名限制,降低了程序的耦合性;
缺点:基于共享进程读取apk资源的改进版,虽然没有签名限制,但其他弊端依然存在

实际应用中可以根据场景合理择取方法,甚至可以是不同换肤方案的组合方式,灵活实现换肤。对文章内容有兴趣,请继续关注换肤系列的第二篇。

更多相关文章

  1. NPM 和webpack 的基础使用
  2. 【阿里云镜像】使用阿里巴巴DNS镜像源——DNS配置教程
  3. 精通android2第一章学习
  4. [Android]LayoutInflater的inflate方法半详解
  5. 如何将Android默认的Camra程序导入到eclipse中
  6. Android加固技术分析与多渠道打包实践
  7. 关于Android(安卓)动态加载 jar 文件
  8. Android:Gradle 解析
  9. Android开发手记一 NDK编程实例

随机推荐

  1. Android更新完ADT后遇到的问题
  2. android studio 更改 app 包名和包的长度
  3. OSChina 技术周刊第十期,每周技术抢先看!
  4. android 退出应用方法一:点击两次退出应用
  5. Android(安卓)笔记5---事件处理和手势
  6. android屏幕页面实现滚动,页面跳转
  7. Android中利用Fragment显示为两屏
  8. android中view手势滑动冲突的解决方法
  9. [置顶] 100多个Android(安卓)Demo的整合
  10. Android4.4 WebAPI实现拍照上传功能