全开源C++ DirectUI 界面库SOUI 3.0更新

从2019.5.22开始,SOUI版本号更新到2.9.0.2,后面开始准备3.0的开发,历时近3个月,如今3.0的主要工做基本完成。html

为了便于你们区别2.x,3.0启用了新的代码仓库:https://github.com/soui3/souigit

3.0相比2.x有如下代码的更新:github

一、规范代码中使用的类名,2.x中因为历史缘由有一些类名一直是Cxxx这样的以C开头的类名,新版本统一调整为S开头,好比CAutoRefPtr=>SAutoRefPtr, CSimpleWnd=>SNativeWnd等。web

二、删除原来的 CSize SWindow::GetDesiredSize(LPCRECT)重载方法,只保留CSize SWindow::GetDesiredSize(int wid, int hei)这个方法。若是有息定义控件重载了这个方法须要注意。ide

三、将原来指定主窗口大小的属性从XML的SOUI结点调整到root结点。soui结点不和swindow对象对应,而root结点是一个SWindow对象,把属性迁移到root更合理。动画

四、调整光标显示的实现代码。在uidef.xml里增长了caret元素,用来描述支持光标行为。支持动画光标,支持改变光标颜色。ui

<caret color="rgb(255,0,0)" animate="true" speed="30" interpolator="Accelerate"/>

五、支持滚动条动画特效,配置后滚动条只在有鼠标操做才显示,不然就隐藏,采用渐显渐隐过渡。在XML中配置fadeInterpolator属性来指定插值动画类型,再配置一个fadeSpeed属性(整数,默认30)就能够控制动画。spa

六、彻底的矩阵变换支持。增长SWindow::SetMatrix来实现窗口显示的旋转,平移,绽开等矩阵支持的操做。code

七、从Android移植了Animation模块,之前一个与Android的数值动画对应的ValueAnimation模块。能够基本上实现Android的所有动画效果。经过实现AnimationSet的repeatCount属性,还能够实现Android不方便实现的动画效果。xml

总之,3.0一个任务就是只须要简单的配置XML主能够把界面效果作得更加炫酷。

此外,2.8中也引入了两个重大的更新,这里也一便介绍一下:

一、调整style的命名支持,若是style以window.style的形式命名,那前面的window就是控件类型,而window.style仍是一个常规的style。

假定用户已经在style中定义了一个<button.web xxxx/>这样的style, 经过支持这们的命名规则,2.8以上的SOUI,XML能够直接使用"button.web"来建立一个button控件,该控件自动使用button.web这个style。

二、增长界面模板支持。

若是一个界面中有不少元素是重复的,可是内容是变化的,常规的作法多是使用列表来作。可是用列表可能表明着用户须要增长代码来写Adapter等。

有了模板支持,就能够经过模板来直接插入一组新的元素,而不须要使用列表控件。

详细说明参见:http://www.javashuo.com/article/p-csaucbmp-ea.html

 

启程软件  2019年8月4日