随笔分类 - SOUI教程
摘要:SOUI的布局XML文件保存布局必须的信息。特定场合中,用户可能会需要在布局中指定业务需要处理的属性。 比如启程输入法的皮肤。有的皮肤支持高分屏,有的皮肤不支持。对于这个场景,比较理想的方案是直接在皮肤的布局文件中指定当前皮肤是否支持高分屏。 程序解析到这个自定义属性再决定后续的逻辑。 下面是启程输
阅读全文
摘要:SOUI的界面布局使用XML来布局,在XML配置的属性值会通过SObject::SetAttribute(name, value)的方式交给SObject处理。 SWindow是SOUI的界面元素对象,继承自SObject,同样也是通过SetAttribute获取XML中配置的属性。 虽然SObje
阅读全文
摘要:一直以前SOUI中引用资源都是通过uires.idx中定义资源类型及路径,比如: <?xml version="1.0" encoding="utf-8"?> <resource> <UIDEF> <file name="xml_init" path="uidef\init.xml" /> </UI
阅读全文
摘要:在SOUI4中工作线程如果与UI线程交互 很多时候程序的耗时过程需要在工作线程执行,执行过程中可能需要通过UI线程来展示运行状态及结果,这就涉及到工作线程与UI线程交互的问题。 SOUI的UI框架本身不是线程安全的,如果在工作线程直接操作UI元素,运气好就是数据不正常,运气坏一点就是程序崩溃。因此正
阅读全文
摘要:很多客户端产品有视频渲染需求。视频渲染有软件渲染和硬件渲染两种方案。 软件渲染一般来说需要将常见的yuv视频流转换成rgb/rgba视频流,再通过GDI绘制到窗口上。软件渲染的优势在于可以方便的和客户端界面做融合,达到更好的界面效果,比如通过alphablend等API实现前景,背景的混合。 然后软
阅读全文
摘要:SOUI4.1提供了全新的lua脚本模块支持,使用这个新版本的脚本模块,可以轻松将所有UI布局及业务逻辑全部使用XML+LUA实现,基本上就是一个超轻型浏览器。 SOUI4.0相对于SOUI3最大的区别就是将所有对外导出的必须模块都使用COM接口实现,使用这种技术,任意语言只要支持C接口都可以轻松的
阅读全文
摘要:原来的日志输出宏用法有点奇怪,感觉总是不够理想。这近有点时间终于把它重整了一下。 以前的用法就不介绍了,重点介绍一下新版本的用法。 在SOUI中使用的日志系统包含两个部分:日志输出宏及日志到文件的打印模块。 日志打印模块主体是抄自一份log4z的代码,然后做了一点简单的修改来适合SOUI的接口。 日
阅读全文
摘要:原文: 使用 SOUI 开发高 DPI 桌面应用程序_吹泡泡的小猫的博客-CSDN博客 补充说明:soui3以后版本对dpi的支持更完善了,用起来也更简单了。 1 应用程序感知 DPI 变化 在 Windows 2000 之前,大部分大部分开发人员对显示器分辨率的关注点是如何让自己的程序在低分辨率的
阅读全文
摘要:前段时间用sdl嵌入SOUI做视频播放器,由于SOUI习惯屏蔽系统默认的非客户区,而在窗口自己的客户区分出一块来模拟非客户区,导致窗口在拉伸的时候,SOUI窗口会出现比较严重的闪烁(不光是SOUI这样,其它UI库也存在类似问题,应该是MS的原因),打开系统的非客户区就不闪烁。 为了让业务层有更一致的
阅读全文
摘要:C++程序员最难的一环就是处理内存泄漏。 很多情况下,一个对象在一个模块里分配了内存,忘记了释放,或者在另一个模块里释放都会导致内存相关的问题。 SOUI中大部分暴露在应用层的对象都使用类似COM的引用计数来管理对象的生命周期,包含SWindow, ISkin, EventArg, SStringT
阅读全文
摘要:传统的XML文件通常是utf8编码的文本文件。使用文本文件好处在于方便查阅及修改。 SOUI使用XML做为布局描述语言,所有的布局资源都是XML。文本文件格式自由,XML解析器需要对文件中的字符逐个解析,最后生成DOM树。 解析过程还要判断各种格式合法性以及特殊符号的转义等工作,导致性能方面很难进一
阅读全文
摘要:上一篇介绍了插值动画,插值动画是直接作用于窗口对象的。 数值动画则可以作用于任何对象。 SOUI内置了3种数值类型的动画,分别是SIntAnimator, SFloatAnimator, SColorAnimator,分别对应int, float, COLOR这3种数据类型,当然用户也可以扩展支持其
阅读全文
摘要:在Android系统中,有插值动画,数值动画,属性动画,帧动画。 帧动画,在SOUI里可以通过AnimateImg这个控件来实现,其它几种动画3.0之前不支持,需要类似动画效果,只能自己通过定时器去实现,实现成本比较高。 SOUI3.0增加了插值动画和数值动画支持,属性动画可以通过数值动画来实现,因
阅读全文
摘要:概要 注意:布局模板是SOUI 2.8.0.4 新增加的功能。之前版本不支持。 SOUI的listview等一系统控件支持通过模板来创建列表项,这里要说的模板不是指listview中的使用的列表项模板。 对于比较大的项目,在页面布局中可能会出现重复的布局结构,只是部分属性不一样。对于完全相同的布局,
阅读全文
摘要:在实现网格布局前,SOUI支持两种布局形式:相对布局,和线性布局,其中线性布局是2017年2月份才支持的布局。 这两年工作都在Android这里,Android里有号称5大布局(RelativeLayout, LinearLayout, FrameLayout, GridLayout,TableLa
阅读全文
摘要:第1讲-开发环境搭建 http://my.tv.sohu.com/us/282307706/89333168.shtml 第2讲- 基本应用程序框架代码解读 http://my.tv.sohu.com/pl/9259542/89334976.shtml 第3讲-SOUI的布局系统 http://my
阅读全文
摘要:和手机屏幕一样,高分屏在PC上使用越来越多。传统的桌面程序都是像素为单位进行UI布局,而且是适配传统的96dpi的显示器的。这就导致这些程序在高分屏上显示很小,用户用起来很难受。 虽然windows系统提供了桌面程序自动放大功能,但这个放大效果是以牺牲显示效果为代价的,一个在普屏上显示很好的软件到了
阅读全文
摘要:动态语言切换是很多国际化产品的需求,SOUI之前的版本支持静态多语言翻译,通过在程序启动时设置好语言翻译模块,在程序中打开的UI都会自动调用该翻译模块进行文字翻译,但是不支持运行进语言切换。 最近几个网友都提到这个需求,还是决定在SOUI实现一套动态多语言切换机制。 先看看运行效果: 多语言切换首先
阅读全文
摘要:SOUI 2.5.0.3開始支持窗口大小自適應。 2.5.0.3以前,宿主窗口要適應顯示內容大小比較麻煩,因爲一般都是佈局內容適應宿主。 SOUI 2.5.+開始支持線性佈局,線性佈局是借鑑的Android的線性佈局,對於內容自適應的支持更加理想。 要想窗口大小自適應,只需要在佈局的SOUI結點中指
阅读全文