跳到主要内容

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 开发的首选。