概述#
LVGL v8.2 带来了重大的架构改进和强大的新功能。此版本专注于可扩展性和多媒体支持,使集成自定义渲染引擎和处理现代媒体格式变得更加容易。
在众多修复和小更新中,以下是 v8.2.0 中最重要的功能:
- 抽象渲染层,使附加外部绘图引擎更加容易
LV_FLAG_OVERFLOW_VISIBLE标志 - 如果启用,对象的子元素不会被裁剪到父对象的边界内- FFmpeg 解码器支持,用于播放视频和打开各种图像格式
- 字体回退支持,实现无缝的多脚本文本渲染
- 渐变抖动,在低色深显示器上实现更平滑的渐变效果
- 猴子测试,用于自动化 UI 压力测试
- cmsis-pack 支持,适用于 ARM 开发
- 网格导航(
lv_gridnav),用于键盘/遥控器界面
破坏性变更
此版本包含破坏性变更。从 v8.1 升级前请查看下面的完整列表。
提示
NXP 微控制器的 GPU 支持尚未更新到新的绘图架构。详情请参见 issue #3052。
破坏性变更#
- 文件系统缓存:为
lv_fs_read添加了缓存选项(#2979) - Span 控件:
lv_spangroup_get_expand_width()添加了一个参数(#2968) - 绘图架构:渲染器分离允许替换绘图引擎(db53ea9)
架构变更#
为支持模块化和可扩展性而进行的重大结构改进:
- 独立的软件渲染器,允许替换它(#2803)
- 合并 lv_demos 到主仓库(5414652)
- SDL 后端迁移,使用新的后端架构(#2840)
- 环境支持重组:将 RT-Thread(#3025)、CMake(773d50f)和 Zephyr(4bd1e7e)移至
env_support文件夹
新功能#
渲染和图形#
- 抽象绘图层,用于自定义渲染引擎(#2803)
- 渐变抖动支持,实现更平滑的颜色过渡(#2872)
LV_OBJ_FLAG_OVERFLOW_VISIBLE,禁用子元素裁剪(e7ac0e4)- 背景绘制回调函数添加到
draw_ctx(#2935) - SDL 圆角图像支持(#3012)
多媒体和字体#
- FFmpeg 视频和图像解码器,用于播放视频和加载各种图像格式(#2805)
- 字体回退支持,FreeType 新增内存字体加载选项(#2796)
- FreeType 粗体和斜体支持(#2824)
- FreeType 内存优化(#2849)
UI 组件#
- 菜单控件,用于分层导航(#2603)
- 网格导航(
lv_gridnav),用于键盘/遥控器控制(#2911) - 滚动条内边距控制,实现更精确的样式设置(4197b2f)
- 下拉列表持久化,在打开/关闭时保持状态以简化样式设置(9d3134b)
测试和开发#
事件和输入#
- 事件预处理和停止冒泡功能(#3003)
- 独立的滚动链标志(
LV_OBJ_FLAG_SCROLL_CHAIN_HOR和LV_OBJ_FLAG_SCROLL_CHAIN_VER)(#2961) LV_OBJ_FLAG_SCROLL_WITH_ARROW,用于方向键滚动(70327bd)lv_obj_get_event_user_data()辅助函数(53ececc)- 缺失的
lv_indev_delete()函数(#2854)
其他功能#
- 符号重定义保护,允许自定义
LV_SYMBOL_*定义(#2973) - FPS 统计重置函数(#2832)
- 显示刷新定时器解耦(85cc84a)
- Rlottie 动画控制选项(#2857)
- QRcode 析构函数,替代
lv_qrcode_delete()(318edd8) - 中文 README 翻译(#2919)
性能改进#
Bug 修复#
此版本包含超过 100 个 bug 修复,涵盖渲染、控件、内存管理和平台支持。主要修复包括:
渲染#
- 修复渐变对齐和抖动问题(#3036,#3034)
- 修复画布渲染,强制使用软件绘制(#3045)
- 修复索引图像绘制(5a0dbcc)
- 修复背景图像不透明度和裁剪圆角处理(d51aea4)
- 修复特殊情况下的边框绘制崩溃(075831a)
控件#
- 修复滚轮文本裁剪(5709528)
- 修复下拉列表为空时按下崩溃(2392f58)
- 修复标签点渲染,当高度 > 1 行字体时(4d61f38)
- 修复开关旋钮尺寸计算(5ec532d)
- 修复进度条和滑块在短指示器上的阴影绘制(364ca3c)
- 修复圆弧旋钮失效(345f688)
- 修复按钮矩阵选中按钮持久化(d47cd1d)
内存管理#
平台支持#
- 修复各种 ESP32 问题(#3007)
- 修复 RT-Thread 结构和日志(#2912,#2811)
- 修复 Kconfig 默认值和配置(#3050,#2989)
- 修复 CMake 构建系统(#2753)
- 修复 Makefile 编译错误(#2944)
- 修复使用 make 构建 SDL(43729d1)
核心系统#
- 修复
lv_deinit/lv_init序列崩溃(#2910) - 修复在事件中删除对象(9810920)
- 修复特殊情况下的事件发送核心崩溃(#2807)
- 修复
full_refresh = 1时的刷新崩溃(#2999) - 修复
lv_obj_set_parent()中的父对象滚动更新(#2965) - 修复非 LEFT/TOP 对齐时的
LV_SIZE_CONTENT计算(9c67642)
文档#
- 更新演示信息以反映新布局(#3029)
- 添加 Tasmota 和 Berry 介绍(#2874)
- 在输入设备文档中添加手势描述(2719862)
- 添加常量样式描述(28ffae8)
- 添加 FAQ 部分:"LVGL 无法启动,显示器上没有任何绘制"(0388d92)
- 更新移植指南,包含更多项目集成细节(6ce7348)
- 更新文件系统接口描述(285e6b3)
- 文档中的多处拼写和格式修复
测试和 CI#
- 添加进度条单元测试(#2845)
- 添加开关单元测试(#2794)
- 添加控件和压力演示测试(3bd6ad8)
- 添加渐变样式测试(da8f345)
- 初步支持跨架构测试(7008770)
- 添加代码格式化工作流(a2b555e)
- 添加 Arduino linter 操作(f79b00c)
- 切换到 codecov v2(6b84155)
