GUI 引擎
概述
DejaOS 适配了带屏幕的嵌入式设备,因此需要图形界面支持。我们选择了开源图形库 LVGL(Light and Versatile Graphics Library)作为核心 GUI 引擎。
LVGL 是一个专为资源受限设备设计的轻量级 GUI 框架,具有丰富的图形控件、灵活的样式系统和极低的内存使用。它广泛应用于智能家居、工业控制、消费电子等嵌入式领域。
虽然 LVGL 本身是用 C 语言开发的,但在 DejaOS 中,我们将其与 QuickJS 引擎集成,让开发者可以直接使用 JavaScript 构建界面,大大降低了开发门槛。
LVGL 的主要特性
- 轻量高效:可在仅几百 KB 内存的设备上流畅运行,适合低功耗嵌入式环境。
- 丰富控件:内置按钮、标签、图表、滑块、列表等 UI 组件,可快速构建复杂界面。
- 可定制样式:支持主题系统和样式定制,便于创建统一美观的视觉体验。
- 跨平台可移植:支持各种 MCU 和操作系统,适配 LCD、OLED 等显示接口。
- 活跃社区支持:丰富的文档、示例和论坛,帮助开发者快速上手和扩展。
在 DejaOS 中的应用优势
在 DejaOS 平台上,开发者可以通过 JavaScript 脚本调用封装的 LVGL 接口,如创建按钮、设置文本、响应触摸事件等:
import dxui from "../dxmodules/dxUi.js";
let button1 = dxui.Button.build("button1", screen_main);
button1.setSize(120, 50);
button1.bgColor(0x000000);
button1.bgOpa(30);
button1.on(dxui.Utils.EVENT.CLICK, () => {
//
});
这种方式带来了多重优势:
- 快速开发:无需编译,修改后立即运行
- 门槛更低:无需掌握 C 语言
- 热更新:可远程部署 UI 更新包
应用场景
LVGL 适用于以下典型场景:
- 智能家电(如触摸面板、智能冰箱等)
- 工业人机界面(HMI)
- 医疗设备(如诊断仪器显示界面)
- 汽车中控台/仪表盘
- 智能穿戴设备(如手表、健身设备)
其强大的扩展性和出色的性能使其成为嵌入式 GUI 开发的首选。