最近的工作算是我難得的空檔時間,IC驗證告一段落,新版的IC要回來是下個月的事情,關於電子標籤的軟體架構部份還剛在起草規格的階段。所以終於有空來嘗試些新的技術,到了Qt的官網下載了Qt 4.7.0的版本,來看看Trollers最近在搞什麼新的玩意。一打開說明文件,乖乖地不得了,多了一個QML(JavaScript-like declarative language ㄟ 找不到全名XD)這一個在今年初在網路上吵的沸沸揚揚的新技術,其實在Qt4.6的版本中就在Labs的git server上展示過過這個技術,只是我之前並沒有太多的關注在上面,畢竟在那時QML還算是個未成熟的技術,用了也只是幫別人在debug罷了。
但是這次Qt正式地將QML的這個語言放入4.7版的SDK中,代表了Trollers開發者認可了這項技術的成熟度與實用性。QML是一種類CSS的語言+支援JavaScript,Tarce QML的source code會發現其實它包裝的就是Qt QGraphicsObject與Sub-classes,但QML強調的是UI的整合的易使用性與Fluid-UI的動畫效果,如果要靠C++的做到這件事,可能Source code的大小與recompiling的時間成本會過高,另外簡單易懂的script語言,也相對地增加了只想開發UI的程式設計者的學習意願,畢竟C++的門檻以及嚴謹的類別檢查會讓許多初學程式的人望之怯步。
QML包裝了一些使用者常會用到的元件,例如Rectangle,Image,與Text等等,讓人很間單的上手,也將Fluid的動畫效果有系統地分門別類。我自己用model-view的概念,將之前電子標籤Interaction的UI換成QML的元件,資料則用QAbstractItemModel包裝起來。透過QML,我寫了一個展示標籤的預覽區,以及ESL設定的互動區,彼此用動畫來切換,所需的程式碼大概350行。相信很多的C++的Programmer應該會對原碼的大小羨慕到口水都流出來,當然資料的maintain還是透過C++有效率多了,但是對於只設計UI的美工技術人員來說,是多了一個除了靜態外,還有動態預覽好用的設計工具。
個人覺得自從智慧型手機的熱賣,帶給人機介面設計者不少觀念上的改變,滑鼠有可能會被Touch Panel所取代變成最主要的互動介面(市面上已經有推出許多有Touch Film的LCD Monitor)。將一大堆功能設計在同一個視窗上,對於Touch當做互動介面的使用者來說並不那麼地便利,Programmer在開發UI的同時,不能期待能有滑鼠來精確地移動並點擊,以往使用Tab換頁,用TreeView或是ListView顯示資料的方式可能並不合適。取而代之的是手指滑過要有Flip的效果,內容要隨著滑動的速度來顯示,在手指點擊Item時就要有動畫將內容放大或縮小來做編輯。QML在支援這種概念下有很好的包裝以及類別給Programer使用,但是它也不是完全沒缺點,效率仍是最大的問題,在跨平台的移植上必須多費心對CPU負擔會不會過重。但在個人電腦以及一般高階的手機流暢度是沒有太大的問題,如果有畫面的lag,檢查一下code大都是指定變數的時機不好,而造成多餘的update loop。
昨天和小君在慶城街一號把玩最近Nokia推出的N8,感覺上沒有太大令人驚喜的新鮮感,(還是Sybiam平台 ><),Linux+Intel的MeeGo平台則是下一代Nokia捲土重來的殺手級的產品,(小道消息傳是N9,我個人還蠻期待的,畢竟一路走來我一直是QT的死忠擁護者),和Android的作法一樣,都是搭配Linux的kernel再加上一整包的作業系統來吸引最重要的軟體開發者,只是Google的作法是架構一個Dalvik的虛擬機器來吸引JAVA的開發者無痛跨平台,Nokia則是推出MeeGo SDK平台再加上QML這種讓網頁開發者很好上手的語言,來吸引軟體開發公司加入OVI的陣營。馬還在跑,舞還在跳,找張凳子來看好戲囉。
ps.視窗的上方是傳統的QT TableView元件,下方則是利用QML寫出的互動介面
2010-12-01
QML + MeeGo = Nokia + Intel??
訂閱:
文章 (Atom)