关于一个换肤系统的设计解决方案(一)
2011-10-24 23:48
225 查看
好久没有写过文章了,这篇文章分享的是设计一个基于原有UI绘画架构的换肤系统,当然,这里做的仅仅是一个解决方案设计和实现,深入的绘画用的是已有的东西(当然着色和色相变换是我添加的(*^__^*) );
这套东西我叫theme系统,这个系统可以分为一个主控制体和三个辅助控制部分;
主控制为一SkinLoader类:所有相关到skin的图片和颜色值还有字体都需要通过这个类加载这是一个统一加载入口;
类中包含两个map,一个为不换肤的UI object,另一个存可以换肤的UI object,还有就是一个皮肤对应的拥有体;
辅组资源类SkinSource类:装载和卸载主题包含资源;(xml格式定义的一套资源标准)
辅组主题包类ThemeFileListLoader:负责搜寻查找主题包,并提供外部查询;
主题包包含有以下元素:
1.一个主题config.xml:主题是否可以被自定义着色,主题默认着色值,版本号;
2.preview图片;
3. image文件夹,包含需要被换掉的图片资源;
4. theme.xml标明换掉的image文件对应的资源路径;
公共资源layout被存放在一个名为public的文件中,里面包含窗口layout xml文件和公共image文件。
公共主题包提供默认的所有资源,配合default主题包搭载默认主题;
一个主题的基本实现逻辑实现了:(没搞过软件工程图,画得很烂,望各位多多指教)
:
这套东西我叫theme系统,这个系统可以分为一个主控制体和三个辅助控制部分;
主控制为一SkinLoader类:所有相关到skin的图片和颜色值还有字体都需要通过这个类加载这是一个统一加载入口;
类中包含两个map,一个为不换肤的UI object,另一个存可以换肤的UI object,还有就是一个皮肤对应的拥有体;
辅组资源类SkinSource类:装载和卸载主题包含资源;(xml格式定义的一套资源标准)
辅组主题包类ThemeFileListLoader:负责搜寻查找主题包,并提供外部查询;
主题包包含有以下元素:
1.一个主题config.xml:主题是否可以被自定义着色,主题默认着色值,版本号;
2.preview图片;
3. image文件夹,包含需要被换掉的图片资源;
4. theme.xml标明换掉的image文件对应的资源路径;
公共资源layout被存放在一个名为public的文件中,里面包含窗口layout xml文件和公共image文件。
公共主题包提供默认的所有资源,配合default主题包搭载默认主题;
一个主题的基本实现逻辑实现了:(没搞过软件工程图,画得很烂,望各位多多指教)
:
相关文章推荐
- 一套表情是一个对话系统:关于原创表情设计的思考
- 【高并发解决方案】电商:如何设计一个秒杀系统
- 关于用三大框架写一个系统Dao层的设计
- 一个关于空气质量采集系统的设计与实现
- 关于加载设计器遇到一个或多个错误问题的解决方案
- 关于一个大型web系统架构设计和技术选型的讨论摘录
- 关于《创建组件**失败。错误消息为**未能加载文件或程序集**或它的某一个依赖。系统找不到指定文件。》的解决方案
- 【高并发解决方案】5、如何设计一个秒杀系统
- 关于《创建组件**失败。错误消息为**未能加载文件或程序集**或它的某一个依赖。系统找不到指定文件。》的解决方案
- 一套表情是一个对话系统:关于原创表情设计的思考
- 关于一个大型web系统架构设计和技术选型的讨论摘录
- 关于一个Java帮助系统的设计
- 关于系统设计和模式的两篇不错的文章
- 一个WEB系统的界面设计和开发 —— 一个经验级人物的文章
- 关于DEV皮肤的换肤 也是系统风格的代码 C#
- 设计模式在一个系统架构设计中的应用
- HP中关于系统时间和输出差距8小时的原因及解决方案 (2011-07-27 00:49:37)
- 高并发 强实时 强一致数据库业务系统设计的一个思路
- 关于系统设计
- 关于栈的弹出函数设计是否应该有两个返回值,一个表示数据,一个表示是否栈为空