关于一个换肤系统的设计解决方案(一)


       好久没有写过文章了,这篇文章分享的是设计一个基于原有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主题包搭载默认主题;


一个主题的基本实现逻辑实现了:(没搞过软件工程图,画得很烂,望各位多多指教)

关于一个换肤系统的设计解决方案(一)_第1张图片


你可能感兴趣的:(UI,xml,image,object,layout)