在SOUI中,使用uires.idx这个文件来记录程序中使用的所有资源文件。

此外绘制对象(ISkinObj)则一般放在skin.xml中描述。

要向一个界面中增加一个新的图片,在没有uiresImporter之前,首先我们需要把新的图片资源增复制到uires下的某个目录下,然后在uires.idx中加一条文件记录,然后在skin.xml中使用一个适当的skin类型(一般是imglist,imgframe)来描述图片的显示方式,再在UI中引用该skin来绘制。

由于SOUI目前没有提供UI编辑器,所有的XML都需要手写,图片很多的时间文件导入是一个很麻烦又容易出错的工作。

根据前段时间一个网友制作的内部使用的SOUI辅助工具的思想,我开发了uiresimporter这个工具。

uiresimporter.exe位于SOUI的tools目录下,对应源代码在tools\src\uiresimporter里。

uiresimporter的目标就是试图解决手动增加资源的麻烦。

和uiresBuilder一样,uiresimporter也是一个命令行工具,它支持5个参数,见下面示例代码(demos\mclistview_demo\uiresimporter.bat):

 rem 使用uiresImporter来自动导入资源到uires.idx及values\skin.xml.
rem -p中指定uires目录。
rem -s中指定需要在uires.idx中自动更新的文件夹。存在多个目录时应该使用"a|b|c"这样的形式分割,并使用引号。
rem -i参数中指定的图片支持自动生成skin,自动生成skin只支持imglist,imgframe两种,不支持的图片放到其它目录,如示例中的滚动条皮肤。
rem -b yes自动备份原有XML。no不备份。
rem -c yes 皮肤默认支持着色处理,no 默认禁止着色。
%SOUIPATH%\tools\uiresImporter.exe -p uires -s "layout|icon|imgx" -i image -b yes -c no

为了自动导入图片,我们需要为图片的文件名做点修改:uiresimporter通过文件名后的以[]包含的内容来识别图片显示格式。

可以有3种格式:

1、对于imglist,只需要在[]中指定一个子图数量即可,如btn_login[3].png,这样uiresimporter自动生成一个名字为btn_login的imglist对象,这个对象有3种状态。(当不指定[x]时,也生成一个imglist对象,状态数量为1。

2、对于imgframe,有一种完成的方式和一种缩略形式:

  2.1 完全形式:bg_login[1{2,40,2,10}].png。这代表图片只有一个状态,它的九宫切分为left:2,top:40,right:2,bottom:10。

  2.2 缩略形式:bg_login[1{2,5}].png。当九宫的上下及左右大小相同时,可以使用缩略形式来命名。

2016-5-2号版本新增加以下可选参数:

{ec=0/1} 是否支持皮肤着色(enableColorize)

{fit=0/1} 自适应绘图标志

{tile=0/1} 平铺标志

{filter=0/1/2/3} 插值滤镜类型, 0=null, 1=low, 2= midium, 3=high

{vert=0/1} 子图垂直排列标志。

在imgframe中,上述新标志必须在margin标志之后,否则margin标志将不能识别。

注:如果是需要将资源编译到EXE,导入文件后记得使用uiresbuilder来重新生成.rc2文件。

  

第三十三篇:使用uiresImporter生成uires.idx及skin.xml的更多相关文章

  1. Android UI开发第三十三篇——Navigation Drawer For Android API 7

    Creating a Navigation Drawer中使用的Navigation Drawer的android:minSdkVersion="14",现在Android API ...

  2. C++第三十三篇 -- 研究一下Windows驱动开发(一)内部构造介绍

    因为工作原因,需要做一些与网卡有关的测试,其中涉及到了驱动这一块的知识,虽然程序可以运行,但是不搞清楚,心里总是不安,觉得没理解清楚.因此想看一下驱动开发.查了很多资料,看到有人推荐Windows驱动 ...

  3. Python之路(第三十三篇) 网络编程:socketserver深度解析

    一.socketserver 模块介绍 socketserver是标准库中的一个高级模块,用于网络客户端与服务器的实现.(version = "0.4") 在python2中写作S ...

  4. 第三十三篇-TabLayout的使用

    效果图: 最上方是一个TabLayout,有三个部分,新闻.财经.娱乐,下方是一个ViewPaper,里面包含三个fragment,分别对应三个xml和java class. 第一个Fragment里 ...

  5. 第三十三篇、富文本 NSMutableAttributedString

    // 设置颜色等 NSMutableDictionary *arrDic = [NSMutableDictionary dictionary]; arrDic[NSForegroundColorAtt ...

  6. 第三十三篇 Python中关于OOP(面向对象)的常用术语

    面向对象的优点 从编程进化论可知,面向对象是一种更高等级的结构化编程方式,它的好处主要有两点: 1. 通过封装明确了内外,你做为类的缔造者,你就是女娲,女娲造物的逻辑别人无需知道,女娲想让你知道,你才 ...

  7. 第三十三篇 玩转数据结构——红黑树(Read Black Tree)

    1.. 图解2-3树维持绝对平衡的原理: 2.. 红黑树与2-3树是等价的 3.. 红黑树的特点 简要概括如下: 所有节点非黑即红:根节点为黑:NULL节点为黑:红节点孩子为黑:黑平衡 4.. 实现红 ...

  8. 第三十三篇:关于ES6,JSON和Webpack

    好家伙 1.什么是ES6? ECMAScript是javascript标准 ES6就是ECMAScript的第6个版本 (大概是一个语法标准规范) 2.什么是JSON? JSON 是什么,在数据交换中 ...

  9. 【第十三篇】mvc下载文件,包括配置xml保护服务端文件不被外链直接访问

    这里先说下载文件 <a style="color:black; margin-right:3px;" onclick="dowAtt(' + index + ')& ...

随机推荐

  1. highcharts总结

    //tooptip此属性表达的是鼠标移那个位置显示的值 tooptip:{ formatter: function (){ //this.point.name 表达显示名字 //this.x 表达显示 ...

  2. C#技术漫谈之垃圾回收机制(GC)

    GC的前世与今生 虽然本文是以.NET作为目标来讲述GC,但是GC的概念并非才诞生不久.早在1958年,由鼎鼎大名的图林奖得主John McCarthy所实现的Lisp语言就已经提供了GC的功能,这是 ...

  3. 各种主流浏览器CSS、BUG兼容

    1.div的垂直居中问题 vertical-align:middle;将行距增加到和整个DIV一样高 line-height:200px;然后插入文字,就垂直居中了.缺点是要控制内容不要换行.---- ...

  4. 浅谈Android样式开发之布局优化

    引言 今天我们来谈一下Android中布局优化常用的一些手段.官方给出了3种优化方案,分别是</include>.</viewstub>.</merge>标签,下面 ...

  5. 【Java之对象清理】finalize()的用途

    Java允许在类中定义一个名为finalize()的方法.它的工作原理是:一旦垃圾回收器准备好释放对象占用的存储空间,将首先调用其finalize()方法.并且在下一次垃圾回收动作发生时,才会真正回收 ...

  6. 预处理指令#pragma

    #pragma介绍 #pragma是一个预处理指令,pragma的中文意思是『编译指示』.它不是Objective-C中独有的东西(貌似在C/C++中使用比较多),最开始的设计初衷是为了保证代码在不同 ...

  7. AVAudioPlayer

    AVAudioPlayer在AVFoundation框架下,所以我们要导入AVFoundation.framework. AVAudioPlayer类封装了播放单个声音的能力.播放器可以用NSURL或 ...

  8. Spring配置文件集成Hibernate配置文件

      Spring对hibernate配置文件hibernate.cfg.xml的集成,来取代hibernate.cfg.xml的配置.  spring对hibernate配置文件hibernate.c ...

  9. webpack 配置文件

    现如今,webpack非常的受欢迎,比较火的几款js框架都推荐使用webpack来构建项目,而webpack也确实非常强大,但是配置webpack缺常常带来很多问题,接下来就写一下我自己遇到的一些坑. ...

  10. windows XP上实现python2.7.5和python3.4.3共存

    windows XP上实现python2.7.5和python3.4.3共存过程记录: 1. 首先安装python2.7.5和python3.4.3,两个版本安装顺序不分前后; 2. 检查系统环境变量 ...