v8.0 带来了许多新功能,包括简化且更强大的滚动、受 CSS Flexbox 和 Grid 启发的新布局系统、简化和改进的控件、更强大的事件系统、可挂钩的绘图功能等等。
破坏性变更
v8 是一个重大更新,因此与 v7 不向后兼容。请参阅下方的迁移指南了解如何升级您的项目。
目录结构#
项目组织结构已经过精简,以提高可维护性:
- 文件夹名称中移除了
lv_前缀 docs文档已移至lvgl仓库examples示例已移至lvgl仓库- 创建了
src/extra文件夹用于复杂控件:- 使 LVGL 核心更加精简
- 为大量特定控件提供空间
- 为社区贡献提供绝佳场所
控件变更#
多个控件已被整合和重新设计:
- 移除
lv_cont- 布局功能已移至lv_obj - 移除
lv_page- 滚动功能已移至lv_obj - 移除
lv_objmask- 相同效果可以通过事件实现 - 新增
lv_meter,作为lv_linemeter和lv_gauge的合并 - 新增
lv_span控件,模仿 HTML<span>标签 - 新增
lv_animimg控件,用于简单的幻灯片动画 - 以及许多其他细微的变更和改进
新的滚动系统#
滚动功能现在更加灵活,可在任何对象上使用:
- 支持"弹性"滚动,当滚动超出边界时
- 支持任何对象类型之间的滚动链接(不仅限于
lv_page) - 移除
lv_drag- 类似效果可以通过在LV_EVENT_PRESSING中设置位置来实现 - 添加吸附支持
- 添加吸附停止功能,最多滚动 1 个吸附点
新的布局系统#
LVGL 现在支持现代 CSS 风格的布局:
- 支持类似 CSS Grid 的布局
- 支持类似 CSS Flexbox 的布局
样式系统改进#
样式系统已经过优化和简化:
- 状态保存在对象中,而不是样式属性中
- 对象的大小和位置也可以在样式中设置
增强的事件系统#
事件现在更加灵活和强大:
- 允许向一个对象添加多个事件
- 可以为添加的事件附加
user_data用户数据
驱动程序变更#
提示
v8 中显示器和输入设备驱动程序初始化已更改。迁移时请仔细查看这些变更。
lv_disp_drv_t、lv_indev_drv_t、lv_fs_drv_t需要声明为static...disp_buf...已重命名为draw_buf。参见初始化示例 这里- 如果设置了两个屏幕大小的缓冲区,则不进行部分更新
disp_drv->full_refresh = 1始终使整个显示器重绘- 需要在
disp_drv中设置hor_res和ver_res indev_read_cb返回void。要指示还有更多数据需要读取,请在read_cb中设置data->continue_reading = 1
其他重要变更#
- 从创建函数中移除复制参数
- 简化了文件系统接口 API
- 使用更通用的继承模型
- 内置主题已重新设计
lv_obj_align现在会保存对齐方式并自动重新对齐对象,但只能对齐到父对象lv_obj_align_to可以对齐到任何对象,但不保存对齐方式lv_pct(x)可用于以百分比设置大小和位置- 控件中还有许多其他变更,此处未详细说明。请参考控件文档。
新的发布策略#
我们将遵循 GitLab 流程的发布分支:
- 次要版本预计每 3-4 个月发布一次
master分支将始终包含最新的变更
从 v7 迁移到 v8#
警告
首先最重要的是,基于 lv_conf_template.h 创建一个新的 lv_conf.h。
要尝试新版本,建议使用模拟器项目并查看示例。
将您的项目迁移到 v8 时:
- 按照上述说明更新驱动程序
- 更新样式
- 更新事件
- 使用新的布局系统替代
lv_cont功能 - 使用
lv_obj替代lv_page - 其他部分主要是细微的重命名和重构。请参阅函数文档以获取描述。
有关详细的迁移说明,请参阅 v8 迁移指南。
