概述#
LVGL v8.1 是一个次要版本,包含了大量修复和丰富的新功能。此次更新增强了性能,扩展了平台支持,并将多个强大的功能直接集成到核心库中。
主要亮点包括:
破坏性变更#
日历控件现在将其标题直接包含在控件结构中。此变更可能需要更新现有的日历实现。
提交: 2e08f80
架构改进#
第三方库集成
小型、广泛使用的第三方库现在直接集成到 LVGL 中,减少了依赖管理开销,提高了开箱即用的功能。
- 拉取请求:
#2569
新功能#
显示和渲染#
- 直接模式绘制:添加对直接模式渲染的支持
#2460 - 硬件加速 SDL2 渲染:使用 SDL2 的 GPU 加速
#2484 - 非全屏显示实用程序:支持渲染到显示子区域
#2724、#2583 - 乘法混合模式:添加
LV_BLEND_MODE_MULTIPLYcc78ef4
平台支持#
- RT-Thread 集成:完全支持 RT-Thread RTOS,包括设备驱动程序和构建系统
#2660、#2674、#2719 - ESP32 组件:LVGL 现在可通过 ESP32 组件管理器获取
#2521 - Win32 文件系统驱动程序:基于 Win32 API 的新文件系统驱动程序
#2701 - MicroPython 接口目标:改进的 MicroPython CMake 接口
#2529
控件和组件#
- Rlottie 集成:LVGL-Rlottie 接口作为第三方库添加
#2700 - 键盘用户自定义模式:添加自定义键盘布局
#2651 - 键盘按钮弹出框:在按钮矩阵/键盘按下按钮时显示弹出框
#2537 - 消息框内容区域:向消息框添加自定义内容区域
#2561 - 消息框改进:除非需要,否则省略标题标签
#2539,添加获取所选按钮索引的函数#2538 - 开关动画:改变开关状态时的平滑动画
#2442 - 数字框增强:支持使用编码器的双向数字步进
#2644,光标定位#2314 - 跨度文本改进:缩进支持固定和断行模式的百分比
#2693,缺失的跨度组函数#2379
对象系统#
事件#
- 子对象生命周期事件:
LV_EVENT_CHILD_CREATED和LV_EVENT_CHILD_DELETED#2618 - 屏幕加载事件:
- 增强绘制事件:改进
LV_EVENT_DRAW_PART_BEGIN/END的参数88c4859 - 事件回调函数管理:
lv_obj_remove_event_cb_with_user_data()4eddeb3 - 动画用户数据:处理动画用户数据的接口
#2415 - 滚动动画访问:将滚动动画传递给
LV_EVENT_SCROLL_BEGINca54ecf
配置和内存#
- 可配置内存缓冲区:使
LV_MEM_BUF_MAX_NUM可配置#2747 - 内存池分配:
LV_MEM_POOL_ALLOC支持#2458 - 内存监控:添加
LV_USE_MEM_PERF/MONITOR_POSacd0f4f - 可覆盖的日志宏:允许覆盖
LV_LOG_...宏17b8a76
其他功能#
- 画布不透明度:
lv_canvas_set_px_opa()b3b3ffc - 图像大小属性:添加 img_size 属性
#2284 - 圆弧高级命中测试:支持
LV_OBJ_FLAG_ADV_HITTESTdfa4f5c - RTL 改进:使用 RTL 基础方向时滚动条放置在左侧
906448e - 时钟验证:检查是否调用了
lv_tick_inc()aa6641a
性能改进#
圆形绘制重新实现#
圆形绘制算法已完全重新实现,为圆角元素提供了显著更快的渲染速度。
- 拉取请求:
#2374
矩形绘制优化#
矩形绘制算法也已重写以获得更好的性能。
- 提交:
5b3d3dc
其他性能增强#
- 动画时间轴控制:添加
lv_anim_timeline_stop()#2411 - 遮罩优化:如果遮罩不影响当前绘制区域,则忽略遮罩
a842791 - 缓冲区管理:优化双缓冲区
lv_disp_flush_ready()的等待时机d0172f1 - 加法混合:加速加法混合操作
3abe517 - 循环限制检查:从循环限制检查中移除
lv_obj_get_child_cnt()ebb9ce9
错误修复#
此版本包含了库所有领域超过 200 个错误修复。主要修复类别包括:
渲染和绘制#
- 修复了各种半径/宽度配置下的边框绘制错误
- 纠正了渐变绘制和裁剪问题
- 修复了阴影宽度较大且半径为 0 时的阴影绘制问题
- 解决了带半径遮罩的图像绘制问题
- 修复了圆弧、仪表和圆形失效问题
- 纠正了启用
clip_corner的矩形绘制
控件#
- 日历:修复了今天和突出显示日期的计算
- 图表:修复了光标定位、滚动和指示器绘制
- 下拉菜单:多个失效和键盘处理修复
- 标签:修复了 BIDI 处理、斜体字母裁剪和
LONG_DOT模式崩溃 - 表格:修复了单元格定位、边框处理和偏移一个错误
- 文本区域:修复了光标绘制、密码模式字符删除和滚动到光标
- 跨度:修复了不透明度、溢出、装饰和对齐错误
- 复选框、开关、滚轮、消息框和许多其他控件修复
对象系统#
- 修复了布局更新和失效问题
- 纠正了使用 RTL 基础方向的对象定位
- 修复了对齐和大小计算问题
- 解决了滚动处理和滚动条可见性问题
- 修复了组和焦点管理边缘情况
内存和平台#
- 修复了显示移除和 PNG/SJPG 解码器中的内存泄漏
- 纠正了 32 位平台上的内存对齐
- 修复了文件系统驱动程序查找和错误处理
- 解决了多个工具链(Keil、IAR、GCC)的编译问题
- 修复了 RT-Thread、STM32、PXP 和 VGLite 驱动程序问题
BiDi 和国际化#
- 修复了 BiDi 弱字符处理
- 纠正了 RTL 下拉列表定位和对象对齐
- 修复了阿拉伯语元音字符处理
- 解决了多个控件中的基础方向处理
有关所有 200 多个修复的完整列表,请参阅完整更新日志。
示例#
添加的新示例和改进示例:
- 图表示例:面积图示例
#2507,带数据间隙的图表#2565 - 动画示例:三次贝塞尔演示
#2393,带渐变的文本462fbcb - 复选框示例:单选按钮实现
d089b36 - 列表示例:
lv_example_list_2#2545 - MicroPython 示例:添加了各种示例的 MP 版本
#2412、#2347
文档#
广泛的文档更新,包括:
- 使用 v8 API 变更更新了移植指南
- 完成了样式属性描述
- 添加了动画图像控件文档
- 修复了许多拼写错误并澄清了令人困惑的部分
- 更新了文件系统、布局和颜色文档
- 添加了提交消息格式指南
- 更新了 Arduino 和 MicroPython 集成指南
超过 70 个文档拉取请求和提交,改进了清晰度、修复了损坏的链接并更新了示例。
测试和 CI#
测试基础设施的重大改进:
- 单元测试:添加了文本处理、圆弧、下拉菜单和复选框控件的测试
#2623、#2617、#2551 - 测试基础设施:将 Makefile 转换为 CMake
#2495,添加了并行测试执行#2515 - 代码覆盖率:集成 gcov 和 codecov
e35b1d0 - MicroPython CI:添加了 ESP32、STM32 和 RP2 端口测试
#2629 - 输入仿真:添加了用于自动化测试的鼠标、键盘和编码器仿真器
迁移说明#
虽然 v8.1 在大多数用例中保持向后兼容性,但有一个破坏性变更:
日历控件:日历标题现在直接嵌入在日历控件中。如果您之前单独访问或自定义标题,则需要更新您的代码。
有关详细的迁移指导,请参阅 v8.1 迁移指南。
开始使用#
更新到 LVGL v8.1:
git clone --branch release/v8.1 https://github.com/lvgl/lvgl.gitbash或更新您现有的仓库:
git checkout release/v8.1
git pullbash对于 platformIO、ESP-IDF、Arduino 或其他包管理器,请将您的依赖项更新到 v8.1.0。
访问文档以探索所有新功能和改进。
