亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

GUI引擎評價指標是什么

發布時間:2021-12-29 13:59:58 來源:億速云 閱讀:126 作者:iii 欄目:互聯網科技

本篇內容介紹了“GUI引擎評價指標是什么”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

GUI 引擎評價指標

github 上的開源 GUI 引擎至少有數十個,如何去評估它們的優劣,如何選擇你需要的 GUI 引擎?這個是艱巨的任務,每個人的需求不一樣,GUI 開發者的意圖也不同,很難找到統一的標準去選出最好的 GUI。QT 是最強大的,沒有之一,但也不一定適合你。

不管怎么樣,總有些指標可以提供有價值的參考,盡管這些指標在遇到不同使用的場景,不同的公司背景,不同的個人喜好,它們所占的權重也大不相同。但是并不能抹殺這些指標的價值,關鍵在于如何根據自己的需要調整它們的比重。

在 《這個開源的 6 千行 UI 框架,能打敗 QT,MFC 嗎?》 這篇文章里,諸葛不亮 的 37 問給了我極大的啟發,在開發 AWTK 的過程中,多次重讀這篇文章,這篇文章堪稱是 GUI 引擎開發者的指路明燈。

如果諸葛大俠不介意,為了活躍氣氛,我就把本文提到的指標稱為《諸葛不亮-李先靜 GUI 引擎評價指標》,把諸葛大俠放在前面,是表示對他的感謝,把我的名字放在里面,是由我承擔一些人的指責。

先開個頭,算是拋磚引玉吧。后續會不斷完善,希望大家也把自己選擇 GUI 引擎時的指標補充進來。

1. 基本指標

1.1 開發者的心態

當你用他們的 GUI 時,他們是感謝你的支持,還在覺得你欠他們的呢?如果他們沒有心存感謝,你最好別用。否則,遇到問題時,你怎么能指望他們幫你解決呢?

1.2 幫助文檔

是否有《API 手冊》、《使用手冊》、《常見問題》、《移植文檔》和《HowTo》,文檔是否在定期更新?

1.3 示例代碼

是否有簡單的入門示例、各種控件的的用法、完整功能的示例?

1.4 代碼風格

目錄名、文件名、類名、函數名、函數參數、局部變量名、全局變量名、注釋和縮進是否一致。

1.5 編程語言

對于 GUI 引擎來說,支持多種編程語言是重要的,可以滿足不同的開發者的需要。對于使用者來說,GUI 是否提供了你需要的編程語言才是最重要的。

1.6 支持的平臺

對于 GUI 引擎來說,支持多種平臺是重要的,可以滿足不同的開發者的需要。對于使用者來說,支持多種平臺也是重要的,你現在開發嵌入式系統,過段時間你可能要開發一個 APP 控制你設備,沒有必要浪費時間去學習不同的 GUI。

GUI 是否支持目標平臺的界面風格,是否提供跨平臺的運行庫,是否對平臺基本的原生功能進行了包裝,能否擴展新的功能。

1.7 可視化的界面設計工具

所見即所得方式開發界面可以降低學習門檻,提高開發效率。

1.8 可視化的界面設計工具是否是用該 GUI 本身開發的

用該 GUI 本身開發的界面設計工具,可以驗證該 GUI 本身的功能是否強大和穩定。

另外用該 GUI 本身開發的界面設計工具,才能把界面設計工具做得易用。比如 TabControl 控件,在設計時可以切換頁面,只有用該 GUI 本身開發的界面設計工具才容易實現。

1.9 在開發環境模擬運行

運行環境和開發環境往往不同, 如果每次都要部署一下才能看到效果,那開發速度一定上不來。

1.10 用 XML/JSON 等數據來描述界面

XML/JSON 是聲明式的語法,不但手工編寫比寫程序容易,也方便借助工具的支持。

對于嵌入低端嵌入式系統來說,XML/JSON 效率不高,最好的辦法是運行時轉換成高效的二進制格式。就像代碼一樣,編譯之前的代碼給人看,編譯之后的代碼給機器看。

1.11 用 XML/CSS 等數據來描述界面的風格

XML/JSON 是聲明式的語法,不但手工編寫比寫程序容易,也方便借助工具的支持。

把界面風格從 UI 描述文件和代碼中剝離出來,也有利于后期的維護,畢竟界面效果是最容易變化的。

對于嵌入低端嵌入式系統來說,XML/JSON 效率不高,最好的辦法是運行時轉換成高效的二進制格式。就像代碼一樣,編譯之前的代碼給人看,編譯之后的代碼給機器看。

1.12 字體格式

支持點陣字體嗎?支持矢量字體嗎?支持自定義字體格式嗎?支持只加載部分字體到內存嗎?配套工具完善嗎?

1.13 圖片格式

支持常見的 png/jpg/gif/bmp 格式嗎?支持 SVG 等矢量圖形嗎?能擴展支持新的格式嗎?

1.14 輸入法

支持拼音輸入法嗎?支持軟鍵盤的 T9 輸入法嗎?支持硬鍵盤的 T9 輸入法嗎?支持語音輸入法嗎?支持手寫輸入法嗎?可以擴展支持新的輸入嗎?

1.15 基本架構模式

是否內置提供支持 MVC、MVP 和 MVVM 等架構模式?是否支持 Vue、React 和小程序類似的開發方式?

2. 功能指標

2.1 高清屏

是否支持高清屏?在 PC 上運行時界面變糊了,在手機上運行時字體變小了,都是不支持高清屏的特征。不支持高清屏就不用談什么跨平臺了。

2.2 矢量圖 API

矢量圖 API 是非常重要的,強大矢量圖 API 能實現很多神奇的效果。個人覺得 HTML5 Canvas 2D API 是最好的矢量圖 API。用 cairo、skia、agge 和 nanovg 這些開源的庫很容易實現類似的 API。

GUI 一定要提供一個抽象的接口,在不同的情況下,可以無縫的切換到最優的實現方案上。比如在嵌入式平臺用 agge,在嵌入式 linux 平臺用 cairo,在 PC 上用 skia 或 nanovg。

2.3 窗口動畫

是否支持窗口動畫?窗口動畫的種類是否夠用?是否可以擴展自己的窗口動畫。窗口動畫的效率如何?窗口動畫使用是否方便?

2.4 控件動畫

是否支持控件動畫?支持那些控件動畫?是否支持自定義的控件動畫?控件動畫使用是否方便?控件動畫的參數有哪些?是否可以停止、暫停和播放控件動畫。

2.5 內置控件是否豐富

是否有你目前需要的控件和將來可能用到的控件。

2.6 控件組合是否方便

有的 GUI 把控件分成葉子節點控件和容器控件,label、image、edit 和 button 都是葉子節點控件。這樣做靈活性很差,往 button 放個圖片或者動畫,往 label 里放個圖片,往 edit 里放一個"清除"/"查找"的 button,不是方便的事嗎,為什么要限制呢?

2.7 自定義控件

沒有一個 GUI 能夠滿足所有的需求,如果不支持自定義控件就悲催了。這樣一個簡單的需要,在有的 GUI 里卻需要修改 GUI 引擎的代碼,那就不好玩了。

2.8 布局 (layout) 參數

通過布局參數控制控件布局,可以讓應用程序適用于不同大小的屏幕。是否支持布局參數,布局功能是否強大,是否可以擴展自定義布局?

2.9 控件自定義屬性

如果控件支持自定義屬性,用戶可以存放自己的數據到控件中,可以避免使用全局變量,是個極為方便的特性。

如果控件支持自定義屬性,對 GUI 進行擴展也很方便,比如 AWTK-MVVM 的綁定規則就使用了用戶自定義屬性,如果將 AWTK-MVVM 移植到 Qt 就很容易,因為 Qt 也支持自定義屬性,要移植到 emwin 就麻煩不少。

2.10 控件:label

label 是最簡單的控件,要做好也不容易。就像炒飯是廚師的基本功一下,label 就是 GUI 開發者的基本功。 支持 style(字體、顏色和對齊等各種參數)嗎?支持 unicode 的換行規則嗎?支持滾動顯示嗎?支持省略號顯示嗎?支持 bidi 算法嗎?支持動畫(比如打字效果和撥號中那種)。滾動顯示支持得到焦點時才滾動嗎?

當然把 label 和 scroll_label 分成兩個控件好點,實現簡單而且在低端平臺無需支持一下不必要的特性。總之,用戶需要時就要有這些功能。

2.11 控件:image

支持旋轉和縮放嗎? 支持旋轉和縮放動畫嗎?支持居中、平鋪、x 平鋪、y 平鋪、九宮格、三宮格、縮放和按比例縮放等各種繪制效果嗎?支持顯示文本嗎?支持點擊嗎?支持勾選嗎?

2.12 控件:edit

支持 edit 不難,要做好卻不容易:支持拷貝、剪切和粘貼嗎?支持撤銷和重做嗎?支持通過鍵盤和鼠標選擇嗎?支持輸入法嗎?可以根據各種輸入類型自動選擇軟鍵盤嗎?可以自定義軟鍵盤嗎?可以指定獲得焦點時軟件盤是否自動開啟嗎?可以指定獲失去焦點時軟件盤是否自動關閉嗎?支持設置有效性檢查函數嗎?支持失去焦點時自動修復輸入值嗎?支持失去焦點時提示輸入有誤嗎?支持輸入提示嗎?支持輸入有變化時提示嗎?支持時間、日期和 IP 地址等格式輸入嗎?

2.13 控件:button

是否支持長按?是否支持設置長按時間?是否支持重復觸發?是否支持圖標?是否支持子控件(如圖片和動畫)?

2.14 控件:軟鍵盤

軟鍵盤使用 XML/JSON 描述嗎?可以定制軟鍵盤(鍵盤布局和風格)嗎?定制軟鍵盤需要修改代碼嗎?軟鍵盤可以用純方向鍵切換焦點嗎?

2.15 控件:table view

支持放入進度條、選擇框、按鈕、圖片和編輯器嗎?支持 View 和 Model 分離嗎?能支持千萬級別的數據嗎?

2.16 控件:code editor

有些高手常用兩個指標來衡量 GUI 的功能:1. 能用它開發一個記事本嗎? 2. 能用它開發一個界面設計器嗎?如果支持 code editor,就可以用它實現一個功能更強大的記事本。

2.17 style

是否支持設置圓角半徑?是否支持對部分角設置圓角?是否可以分別設置上下左右的邊框?是否支持自定義的狀態?

2.18 對話框高亮

彈出對話框時:是否支持對話框變暗?是否支持對話框動態變暗?是否支持對話框動態變模糊?是否支持新的高亮策略。

2.19 鍵盤切換焦點

是否支持鍵盤切換焦點?是否支持上下左右切換焦點(有的設備只有方向鍵和確認鍵)?是否支持設置切換焦點的鍵值?

2.20 截屏

是否支持截屏?

2.21 操作反饋

是否支持按鍵音?不同的控件支付支持不同的按鍵音?是否支持觸屏震動?

2.22 Accessibility

是否支持字體整體放大?是否支持讀屏軟件?

2.23 存儲接口

有沒有提供跨平臺的存儲接口,如文件系統、配置信息和數據庫。

2.24 資源管理

有沒有統一的資源管理接口?資源管理也是很麻煩的事情:比如圖片,它可能存放在 flash 中,可能存放在文件系統中,也可能放在服務器上;對于普通屏和高清屏需要加載不同的文件;不同的語言也可能需要加載不同的文件;同一個軟件在不同的系統上運行,可能要加載不同的格式,有的系統只能使用位圖,有的系統可以使用 png/jpg;圖片還需緩存,緩存還需要清理。所有這些東西,如果讓應用程序來處理,那將是一場噩夢!

強大的資源管理器,可以屏蔽所有這些細節,讓應用程序無需感知。比如,你需要"earth"這個圖片,你無需關心它的位置和格式,無需關心屏幕密度和語言的影響,系統自動加載最佳的圖片文件。

3. 性能

3.1 高效的算法

是否支持臟矩形算法、3 framebuffer 和 二進制格式。開發時使用 XML 方便程序員修改,運行時使用高效二進制格式提高運行效率。

3.2 2D 硬件加速

是否支持常見的加速接口,如 STM32 的 DMA2D 和 NXP 的 PXP。廠家是否可以擴展自己的加速接口。

3.3 3D 硬件加速

是否支持 OpenGL、DirectX、Vulkan 和 Metal 等。

3.4 低端平臺

最低能支持什么樣的硬件平臺?功能強大體積通常比較大,這對 GUI 的可配置性是一個極大的考驗。

3.5 啟動時間

1 秒啟動?5 秒啟動?還要等半分鐘?

4. 國際化

4.1 Unicode。

是否支持 UTF-8 和 UTF-16 編碼?

4.2 多國語言輸入法。

是否支持 T9 輸入法?是否可以支持新的輸入法?

4.3 字符串翻譯。

是否支持字符串翻譯?是否支持實時切換語言(不需重啟)?

4.4 圖片翻譯。

是否支持圖片翻譯(既切換語言時,自動切換某些圖片)?

4.5 文字雙向排版。

是否支持阿拉伯文字的雙向排版?

4.6 編碼轉換函數。

是否提供的跨平臺的編碼轉換函數?

5 軟件質量

5.1 單元測試

是否有完整的單元測試?單元測試是否全部通過?

5.2 內存耗盡處理流程

內存耗盡時是直接崩潰?還是讓應用程序能優雅的退出?

5.3 內存泄露檢查機制

是否有內存泄露檢查機制?是否能用 valgrind 進行內存泄露和溢出檢查?

5.4 代碼靜態檢查。

是否通過了 cppcheck、infer 或其它靜態檢查工具的檢查?

5.5 事件錄制和重放功能

是否可以錄制用戶操作的事件,并通過重放進行壓力測試?

5.6 Appuim 進行自動測試

是否支持 Appuim,通過 javascript 等腳本自動化集成測試?

“GUI引擎評價指標是什么”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

gui
AI

五大连池市| 邻水| 大同县| 巩留县| 黄大仙区| 张家口市| 赞皇县| 宣武区| 华阴市| 邛崃市| 华宁县| 界首市| 呼伦贝尔市| 伊金霍洛旗| 金秀| 黄石市| 西丰县| 东源县| 无锡市| 吉首市| 英超| 潜山县| 宁明县| 华坪县| 临漳县| 分宜县| 南雄市| 阳新县| 上思县| 炎陵县| 台江县| 连平县| 上蔡县| 竹溪县| 姜堰市| 娄烦县| 贵南县| 鹤山市| 济宁市| 洛宁县| 高邑县|