试用 LVGL Pro,一套完整的工具包,助您高效构建、测试、分享和交付 UI!
LVGL
版本发布

LVGL v6.0 发布 — 通用事件和多屏幕支持

LVGL v6.0 引入了所有对象的通用事件、改进的字体转换器(支持字偶距)、多屏幕支持以及 MicroPython 集成。

加博尔·基什-瓦莫希加博尔·基什-瓦莫希6 分钟阅读

改进内容#

通用事件#

在 v5.3 中,您只能为少数几种对象类型(如按钮)添加操作。在 v6.0 中,您可以使用事件为任何对象类型添加操作。

使用 lv_obj_set_event_cb(obj, event_handler) 为对象设置事件回调函数。在 event_handler 中,您将获得调用对象和事件,如 LV_EVENT_CLICKED/PRESSED/VALUE_CHANGED 等。

在事件文档中了解更多信息。

更好的字体#

创建了一个新的字体转换器,支持字偶距和其他一些功能。它是用 Node.js 编写的,因此应该很容易离线使用。

您可以选择更多字体和范围,将它们包含在最终字体文件中。

多屏幕支持#

在 v6.0 中,您可以拥有多个显示屏,每个显示屏都有自己的驱动程序和对象。

要了解有关多屏幕支持的更多信息,请访问显示文档。

MicroPython#

为了流畅地支持 MicroPython,进行了大量改进。了解更多关于 MicroPython 与 LittlevGL 的信息。

新论坛#

这并不算是 LittlevGL 的功能特性,但它与 v6.0 同时发布。我们推出了一个新的、更现代的论坛:https://forum.littlevgl.com

您可以轻松使用 GitHub 或 Google 账户登录。

旧论坛将迁移到 http://forumold.littlevgl.com


从 v5.3 迁移到 v6.0#

警告

v6.0 与 v5.3 不完全兼容,因为发生了一些 API 和概念上的更改。

最重要的事项#

操作与事件#

  • 使用 lv_obj_set_event_cb(obj, callback) 代替 lv_btn_set_action(btn, LV_BTN_ACTION_..., callback)。事件回调函数用于处理所有以前的操作(即长按、释放由单个函数处理)。
  • 对象现在会自动检测它们是否已被删除,无需在您的 lv_event_cb_t 中返回 LV_RES_OK/LV_RES_INV。因此,lv_event_cb_t 函数返回 void。

驱动程序级别#

  • 驱动程序函数签名现在接受一个初始的第一个参数,即驱动程序对象本身。这使您的驱动程序函数可以使用多个物理设备,而无需编写两个单独的驱动程序。
  • (即 indev 回调函数现在接受初始的第一个参数 lv_indev_t *)
  • disp_flush 现在是 flush_cb。它不再直接接受 x/y 坐标,而是接受一个包含 x1、y1、x2、y2 字段的 lv_area_t 参数
  • mem_fill(在 v6.0 中称为 gpu_fill_cb)填充区域而不是线条
  • 动态可变的显示配置。不再在 lv_conf.h 中硬编码。
  • 需要显式初始化您的显示缓冲区并将其添加到显示驱动程序。它替代了 v5.3 中的 VDB。因此 v6.0 中没有 LV_VDB_SIZE,但您应该使用这些显示缓冲区。
  • LV_HOR_RES 和 LV_VER_RES 被替换为 LV_HOR_RES_MAX 和 LV_VER_RES_MAX,它们分别定义显示屏的最大水平和垂直分辨率。LV_HOR_RES 和 LV_VER_RES 仍然有效,但始终反映最后创建的显示屏的分辨率。(只有一个显示屏时没有区别)。

重命名#

  • 所有宏,如 USE_LV_BTN,现在都像 LV_USE_BTN 一样。
  • 重命名符号:SYMBOL_HOME → LV_SYMBOL_HOME
  • 重命名 LV_GROUP_KEY_... 为 LV_KEY_...
  • 多个小的函数 API 更改。几乎所有功能仍然存在,因此您应该能找到每个 v5.3 函数,但可能名称或用法略有不同

动画#

  • lv_anim_t 中的重命名。ready_cb 获取 lv_anim_t * 作为参数。
  • 添加了 lv_anim_set_...(&a) 函数来替代 lv_anim_t 的手动初始化
  • lv_style_anim_t 已删除。使用 lv_anim_t a; 和 lv_style_anim_set_...(&a, ...) 代替。

对象和样式#

  • lv_obj_get_free_ptr 和 lv_obj_get_free_num 被 lv_obj_get_user_data 替代。用户数据的类型可以在 lv_conf.h 中更改
  • 所有内边距和适配都是左、右、上、下,而不是水平和垂直。
  • lv_canvas:使用 lv_draw_... 函数

字体#

  • 字体系统已更新,现在支持字偶距。您可以使用新转换器重新生成字体。
  • 使用新的在线字体转换器生成新字体
  • 内置字体已更改

其他#

  • 用户数据现在也可用于其他一些结构,如驱动程序对象。
  • lv_task 的回调函数现在接收指向任务本身的指针,而不是用户数据。用户数据可以作为 task->user_data 访问
  • img_decoder 得到改进,可以缓存打开的图像。因此,例如 PNG 图像不会一直解码,而是保持打开状态。在图像文档中了解更多信息

致谢#

  • @embeddedt 不懈地支持用户并在开发中提供专业帮助
  • @amirgon 创建并维护 MicroPython 绑定
  • @puzrin 创建新的字体转换器

以及每一位通过拉取请求、想法和建议、测试和反馈提供帮助的贡献者——

非常感谢你们所有人!

关于作者

加博尔·基什-瓦莫希
加博尔·基什-瓦莫希

LVGL 创始人

LVGL 的创始人和首席开发者,这是一个被全球数百万设备使用的开源嵌入式图形库。

认识博客背后的作者们

了解那些分享 LVGL 知识的优秀作者们

查看作者

订阅我们的通讯 不错过任何关于 LVGL 的新闻。我们每月最多发送 2 封邮件。

LVGL

LVGL 是最受欢迎的免费开源嵌入式图形库,支持任何 MCU、MPU 和显示类型,助您构建精美的用户界面。

我们还提供 UI 设计、实现和咨询等服务。

© 2026 LVGL。保留所有权利。
YouTubeGitHubLinkedIn