歡迎您光臨本站 註冊首頁

跨平台 GUI 引擎 AWTK 1.4 發布

←手機掃碼閱讀     admin @ 2020-04-13 , reply:0

一、介紹

AWTK 全稱 Toolkit AnyWhere,是 ZLG 開發的開源 GUI 引擎,旨在為嵌入式系統、WEB、各種小程序、手機和 PC 打造的通用 GUI 引擎,為用戶提供一個功能強大、高效可靠、簡單易用、可輕鬆做出炫酷效果的 GUI 引擎。

歡迎廣大開發者一起參與開發:生態共建計劃

AWTK 寓意有兩個方面:

  • Toolkit AnyWhere。
  • ZLG 物聯網操作系統 AWorksOS 內置 GUI。

AWTK 源碼倉庫:

AWTK Designer 界面設計工具:

  • 不再需要手寫 XML
  • 拖拽方式設計界面,所見即所得
  • 快速預覽,一鍵打包資源
  • 註冊及下載地址:https://awtk.zlg.cn

AWTK Designer

運行效果截圖:

Chart-Demo

MusicPlayer-Demo

Watch

二、最終目標:

  • 支持開發嵌入式應用程序。✔
  • 支持開發 Linux 應用程序。✔
  • 支持開發 MacOS 應用程序。✔
  • 支持開發 Windows 應用程序。✔
  • 支持開發 Web APP。✔
  • 支持開發 Android 應用程序。✔
  • 支持開發 iOS 應用程序。✔
  • 支持開發微信小程序。
  • 支持開發支付寶小程序。
  • 支持開發百度小程序。
  • 支持開發 2D 小遊戲。

三、主要特色

1. 跨平台

AWTK 是跨平台的,這有兩個方面的意思:

  • AWTK 本身是跨平台的。目前支持的平台有 ZLG AWorksOS、Windows、Linux、MacOS、嵌入式 Linux、Android、iOS、Web 和嵌入式裸系統,可以輕鬆的移植到各種 RTOS 上。AWTK 以後也可以運行在各種小程序平台上運行。

  • AWTK 同時還提供了一套跨平台的基礎工具庫。其中包括鏈表、數組、字元串 (UTF8 和 widechar),事件發射器、值、對象、文件系統、互斥鎖和線程、表達式和字元串解析等等,讓你用 AWTK 開發的應用程序可以真正跨平台運行。

2. 高效

AWTK 通過一系列的手段保證 AWTK 應用程序高效運行:

  • 通過臟矩演算法只更新變化的部分。
  • 支持 3 FrameBuffer 讓界面以最高幀率運行 (可選)。
  • UI 描述文件和主題文件使用高效的二進位格式,解析在瞬間完成。
  • 支持各種 GPU 加速介面。如 OpenGL、DirectX、Vulkan 和 Metal 等。
  • 支持嵌入式平台的各種 2D 加速介面。目前 STM32 的 DMA2D 和 NXP 的 PXP 介面,廠家可以輕鬆擴展自己的加速介面。

3. 穩定

AWTK 通過下列方式極力讓代碼穩定可靠:

  • 使用 cppcheck 和 facebook infer 進行靜態檢查。
  • 使用 valgrind 進行動態內存檢查。
  • 近兩萬行的單元測試代碼。
  • ZLG 強大 GUI 團隊的支持。
  • 經過多個實際項目驗證。
  • 多平台 / 多編譯器驗證。
  • 優秀的架構設計。
  • Code Review。
  • 手工測試。

4. 強大

  • 豐富的控制項 (持續增加中)。
  • 支持各種圖片格式 (png/jpg/gif/svg)。
  • 支持各種字體格式 (點陣和矢量)。
  • 支持窗口動畫
  • 支持控制項動畫
  • 支持高清屏。
  • 支持界面描述文件。
  • 支持主題描述文件。
  • 主題切換實時生效。
  • 支持控制項布局策略。
  • 支持對話框高亮策略。
  • 豐富的輔助工具。
  • 支持從低端的 Cortex M3 到各種高端 CPU。
  • 支持無文件系統和自定義的文件系統。
  • 支持裸系統和 RTOS。

5. 易用

  • 大量的示例代碼。
  • 完善的 API 文檔和使用文檔。
  • ZLG 強大的技術支持團隊。
  • 用 AWTK 本身開發的 界面編輯器
  • 聲明式的界面描述語言。一行代碼啟用控制項動畫,啟用窗口動畫,顯示圖片 (png/jpg/svg/gif)。

6. 高度擴展性

  • 可以擴展自己的控制項。
  • 可以擴展自己的動畫。
  • 可以實現自己的主循環。
  • 可以擴展自己的軟鍵盤。
  • 可以擴展自己的圖片載入器。
  • 可以擴展自己的字體載入器。
  • 可以擴展自己的輸入法引擎。
  • 可以擴展自己的控制項布局演算法。
  • 可以擴展自己的對話框高亮策略。
  • 可以實現自己的 LCD 介面。
  • 可以擴展自己的矢量引擎 (如使用 skia/cairo)。
  • 所有擴展組件和內置組件具有相同的待遇。

7. 多種開發語言

AWTK 本身是用 C 語言開發的,可以通過 IDL 生成各種腳本語言的綁定。生成的綁定代碼不是簡單的把 C 語言的 API 映射到腳本語言,而是生成腳本語言原生代碼風格的 API。目前支持以下語言 (以後根據需要增加):

  • C
  • C++
  • lua
  • java
  • python
  • Javascript on jerryscript
  • Javascript on nodejs
  • Javascript on quickjs

8. 國際化

  • 支持 Unicode。
  • 支持輸入法。
  • 支持字元串翻譯 (實時生效)。
  • 支持圖片翻譯 (實時生效)。
  • 文字雙向排版 (計劃中)。

9. 為嵌入式軟體定製的 MVVM 框架,徹底分離用戶界面和業務邏輯。

  • 性能高。
  • 內存開銷小。
  • 隔離更徹底。
  • 可移植到其它 GUI。
  • 代碼小 (~5000 行)。
  • 無需學習 AWTK 控制項本身的 API。
  • 支持多種編程語言(目前支持 C/JS)。

詳情請參考:https://github.com/zlgopen/awtk-mvvm

10. 開放源碼,免費商用 (LGPL)。

四、1.4 版本更新


1. 細節完善

  • 完善 fs 介面。
  • 完善工具支持多主題。
  • list view 支持上下鍵滾動。
  • 完善窗口切換時焦點恢復的問題。
  • 完善 combobox,選擇之後重新打開輸入法。
  • progress circle 支持 line cap 屬性。
  • 增加 vgcanvas_line_join_t 定義。
  • 增加 vgcanvas_line_cap_t 定義。
  • 修改 android resume 后界面黑屏的問題。
  • slide view/pages 每個頁面支持獨立的初始焦點。
  • 增加函數 widget_set_child_text_utf8。
  • 增加函數 widget_set_child_text_with_double。
  • keyboard 在 grab_keys 時,keyboard 處理 key 事件后,應用窗口不再處理。
  • 完善 image value,支持點擊時加上一個增量,增加到最大值后回到最小值。

大量細節完善去請參考: https://github.com/zlgopen/awtk/blob/master/docs/changes.md

3. 新增特性

  • 無文件系統是支持多主題。
  • opengles 支持 snapshot。
  • dit/mledit 支持自己指定軟鍵盤名稱。
  • 點擊滑鼠右鍵觸發 context menu 事件。
  • 使用 event_source_manager 實現主循環。
  • 增加 awtk_main.inc,用於標準程序的主函數。
  • 用 SDL 重新實現 PC 版本的線程和同步相關函數 。
  • edit 增加 input type "custom_password"類型。

4. 新增控制項

5. 新增重要 API

  • 增加 action thread。
  • 增加 action thread pool。
  • 增加動態鏈接庫的介面 dl.h。
  • 增加 waitable ring buffer。
  • 增加 widget_close_window。
  • 增加 waitable_action_queue。
  • 增加 path_replace_extname 函數。
  • 增加 async.c/.h 用於實現函數非同步調用。
  • 增加 path_replace_extname 函數。
  • 增加 async.c/.h 用於實現函數非同步調用。
  • 增加 data reader 介面和 data writer,用於抽象外部 flash 等設備。
  • 增加函數 fs_get_user_storage_path 用於統一 PC 和 android 平台保存數據的目錄。

6. 新增平台

7. 新增語言綁定

8. 新增相關項目

歡迎廣大開發者一起參與開發:生態共建計劃


[admin ]

來源:OsChina
連結:https://www.oschina.net/news/114836/awtk-1-4-released
跨平台 GUI 引擎 AWTK 1.4 發布已經有204次圍觀

http://coctec.com/news/all/show-post-229998.html