LVGL|将lvgl工程从lvgl v7升级到lvgl v8版本(lvgl版本升级)

Posted 挨踢民工biubiu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LVGL|将lvgl工程从lvgl v7升级到lvgl v8版本(lvgl版本升级)相关的知识,希望对你有一定的参考价值。

LVGL系列教程文章列表

lvgl v8 更新说明

v8.0 带来了许多新功能,例如简化且更强大的滚动、受 CSS Flexbox 和 Grid 启发的新布局、简化和改进的小部件、更强大的事件、可挂钩绘图等。

v8 是一个重大变化,因此它不向后兼容 v7。

目录结构的变化

  • 从文件夹名称中删除了 lv_ 前缀
  • docs 被移动到 lvgl 存储库
  • examples 被移动到 lvgl 存储库
  • 为复杂的小部件创建一个 src/extra 文件夹:
    • 它使核心 LVGL 更精简
    • extra中,我们可以有很多特定的小部件
    • 贡献的好地方

部件(widget)的更改

  • 删除了lv_cont,布局功能移到了lv_obj
  • 删除了lv_page,滚动功能移到了lv_obj
  • lv_objmask 同样可以通过事件来实现
  • 添加了 lv_meter 作为 lv_linemeterlv_gauge 的联合
  • lv_span 新小部件模仿 html <span>
  • lv_animing 用于简单幻灯片动画的新小部件
  • + 许多小的变化和改进

新的滚动功能

  • 滚动时支持“弹性”滚动
  • 支持任何对象类型之间的滚动链接(不仅是lv_pagess)
  • 删除lv_drag。 类似的效果可以通过在LV_EVENT_PRESSING中设置位置来实现
  • 添加捕捉
  • 添加捕捉停止以滚动最多 1 个捕捉点

新的布局

样式更新

  • 优化和简化样式
  • 状态保存在对象中而不是样式属性中
  • 对象大小和位置也可以在样式中设置

事件更新

  • 允许向一个对象添加多个事件
  • 一个 user_data 可以附加到添加的事件

驱动程序的更改

  • lv_disp_drv_tlv_indev_drv_tlv_fs_drv_t 需要是static
  • ...disp_buf... 重命名为 draw_buf。 请参阅[此处](https://github.com/lvgl/lv_sim_eclipse_sdl/blob/release/v8.0/main.c#L128-L141)的初始化示例。
  • 如果设置了两个屏幕大小的缓冲区,则不会进行部分更新
  • disp_drv->full_refresh = 1 总是使整个显示重绘。
  • hor_resver_res 需要在 disp_drv 中设置
  • indev_read_cb 返回 void。 表示在 read_cb 中还有更多要读取的 set data->continue_reading = 1

其他变化

  • 从创建函数中删除复制参数
  • 简化的文件系统接口 API
  • 使用更通用的继承
  • 重新设计了内置主题
  • lv_obj_align 现在保存对齐并自动重新对齐对象,但不能用于对齐到父对象以外的对象
  • lv_obj_align_to 可以对齐到一个对象,但不保存对齐
  • lv_pct(x) 可用于以百分比设置大小和位置
  • 小部件中还有许多其他更改,此处未详细说明。 请参阅小部件的文档。

新的发布政策

从 v7 升级到 v8

  • 首先,基于v8的 lv_conf_template.h 创建一个新的 lv_conf.h
  • 要尝试新版本,建议使用模拟器项目并查看示例。
  • 将项目迁移到 v8 时
    • 更新驱动程序,也就是上面说到的[驱动程序的更改]部分
    • 更新样式
    • 更新事件
    • 使用新布局而不是 lv_cont 功能
    • 使用lv_obj代替lv_page
    • 点击这里查看颜色的变化
    • 其他部分主要是小的重命名和重构。 有关说明,参阅相关函数的文档

参考修改

样式

有的简化了函数名,有的简化了函数参数。

lvgl v7lvgl v8
lv_obj_set_style_local_bg_color()lv_obj_set_style_bg_color()
lv_style_set_bg_color(lv_style_t *style,lv_state_t state,uint8_t value)lv_style_set_bg_color(lv_style_t *style,uint8_t value)

创建控件

v8中不能复制父类的样式了。

lvgl v7lvgl v8
lv_label_create(lv_obj_t *parent,lv_obj_t *cope)lv_label_create(lv_obj_t *parent)

对齐

v8中没有与父类对齐的概念,直接与屏幕对齐即可。

lvgl v7lvgl v8
lv_obj_align(lv_obj_t *obj,lv_obj_t *parent,…)lv_obj_align(lv_obj_t *obj,…)

其他修改

其他部分主要是小的重命名和重构。 有关说明,参阅相关函数的文档

以上是关于LVGL|将lvgl工程从lvgl v7升级到lvgl v8版本(lvgl版本升级)的主要内容,如果未能解决你的问题,请参考以下文章

ESP32基础应用之LVGL基础

ESP32基础应用之LVGL基础

LVGL|基于lvgl 7.11.0 编写的 IMX6ULL Linux lvgl GUI,支持OTA远程升级!

LVGL8基础语法-设置中文

什么手表用lvgl

STM32+LittleVgl(LVGL)文件系统使用