全開源C++ DirectUI 介面庫SOUI 3.0更新
從2019.5.22開始,SOUI版本號更新到2.9.0.2,後面開始準備3.0的開發,歷時近3個月,現在3.0的主要工作基本完成。
為了便於大家區別2.x,3.0啟用了新的程式碼倉庫:https://github.com/soui3/soui
3.0相比2.x有以下程式碼的更新:
1、規範程式碼中使用的類名,2.x中由於歷史原因有一些類名一直是Cxxx這樣的以C開頭的類名,新版本統一調整為S開頭,比如CAutoRefPtr=>SAutoRefPtr, CSimpleWnd=>SNativeWnd等。
2、刪除原來的 CSize SWindow::GetDesiredSize(LPCRECT)過載方法,只保留CSize SWindow::GetDesiredSize(int wid, int hei)這個方法。如果有息定義控制元件過載了這個方法需要注意。
3、將原來指定主視窗大小的屬性從XML的SOUI結點調整到root結點。soui結點不和swindow物件對應,而root結點是一個SWindow物件,把屬性遷移到root更合理。
4、調整游標顯示的實現程式碼。在uidef.xml裡增加了caret元素,用來描述支援游標行為。支援動畫游標,支援改變游標顏色。
<caret color="rgb(255,0,0)" animate="true" speed="30" interpolator="Accelerate"/>
5、支援滾動條動畫特效,配置後滾動條只在有滑鼠操作才顯示,否則就隱藏,採用漸顯漸隱過渡。在XML中配置fadeInterpolator屬性來指定插值動畫型別,再配置一個fadeSpeed屬性(整數,預設30)就可以控制動畫。
6、完全的矩陣變換支援。增加SWindow::SetMatrix來實現視窗顯示的旋轉,平移,綻放等矩陣支援的操作。
7、從Android移植了Animation模組,以前一個與Android的數值動畫對應的ValueAnimation模組。可以基本上實現Android的全部動畫效果。通過實現AnimationSet的repeatCount屬性,還可以實現Android不方便實現的動畫效果。
總之,3.0一個任務就是隻需要簡單的配置XML主可以把介面效果做得更加炫酷。
此外,2.8中也引入了兩個重大的更新,這裡也一便介紹一下:
1、調整style的命名支援,如果style以window.style的形式命名,那前面的window就是控制元件型別,而window.style還是一個常規的style。
假定使用者已經在style中定義了一個<button.web xxxx/>這樣的style, 通過支援這們的命名規則,2.8以上的SOUI,XML可以直接使用"button.web"來建立一個button控制元件,該控制元件自動使用button.web這個style。
2、增加介面模板支援。
如果一個介面中有很多元素是重複的,但是內容是變化的,常規的做法可能是使用列表來做。但是用列表可能代表著使用者需要增加程式碼來寫Adapter等。
有了模板支援,就可以通過模板來直接插入一組新的元素,而不需要使用列表控制元件。
詳細說明參見:https://www.cnblogs.com/setoutsoft/p/10528519.html
啟程軟體 2019年8月4日
&n