全開源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日

相關文章
相關標籤/搜索