LVGL v5.2 为图形库带来了实质性的改进,包括新的对象类型、增强的绘图能力、扩展的图像格式支持以及众多对象特定功能。
新增控件#
此版本引入了四个新控件:
- 图像按钮 - 支持自定义图像状态的按钮
- 日历 - 日期选择器和显示控件
- 圆弧 - 弧形进度指示器和控制组件
- 预加载器 - 动画加载指示器
绘图和渲染#
图形渲染引擎的重大改进:
- 直线绘制算法改进,支持垂直线端点
- 圆弧绘制 - 原生支持弧形形状
- 阴影绘制增强,提升视觉质量
- 自定义 VDB 写入函数可在显示驱动中注册,以支持非标准颜色格式,允许 VDB 内容直接刷新到显示屏
- RGB565 交换可交换 RGB565 颜色的两个字节,使得可以通过 8 位串行接口(如 SPI)发送像素数据。在
lv_conf.h中通过LV_COLOR_16_SWAP启用 - VDB 地址可在运行时通过
lv_vdb_set_adr()设置,这对基于 DMA 的显示驱动很有用,因为 VDB 需要特定的内存分配 - 新图像格式支持索引和灰度格式以节省内存
- 图像解码器接口可添加对任何图像格式(如 PNG)的支持
- 在线图像转换器中支持抖动
新对象功能#
lv_obj#
- 添加了不透明度缩放属性,用于缩放对象及其子对象的当前不透明度,适用于对象组的淡入/淡出效果
lv_label#
- 添加了
LV_LABEL_ALIGN_RIGHT以启用文本右对齐 - 添加了
LV_LABEL_LONG_CROP长文本模式,用于简单裁剪标签边界外的文本
lv_btn#
- 添加了墨水效果功能,可在按钮被点击和释放时播放动画效果。通过
lv_btn_set_ink_in_time()、lv_btn_set_ink_wait_time()、lv_btn_set_ink_out_time()配置(需要在lv_conf.h中启用LV_BTN_INK_EFFECT)
lv_page、lv_win、lv_ta#
- 在
LV_GROUP_KEY_UP/DOWN/LEFT/RIGHT上添加了滚动功能,支持键盘/编码器导航 - lv_page:添加了临时隐藏滚动条选项(
LV_SB_MODE_HIDE) - lv_ta:添加了
max_length和accepted_chars属性 - lv_ta:可通过
lv_ta_set_action()添加动作回调函数
其他新功能#
- SYMBOL_DUMMY:如果在字符串前添加此符号,
lv_img将显示文本而不是图像,允许在需要图标的地方使用文本 - 等宽字体支持(在在线转换器中设置宽度)
- 在
lv_conf.h中添加了LV_FONT_CUSTOM定义,用于枚举自定义字体并使其全局可用 LV_CONF_INCLUDE_SIMPLE:定义为编译器符号,以将lv_conf.h包含为#include "lv_conf.h"而不是使用相对路径- 点击聚焦:组中的对象可在被指针输入设备(鼠标或触摸板)点击时获得焦点
- 添加了
LV_GROUP_KEY_DEL键 - 添加了日志系统以打印调试信息
- 添加了 Uniscii 等宽字体作为内置字体
- 为组中的对象添加了编辑/导航模式,适用于基于编码器的导航
- 字符编码接口得到简化,便于添加内置 UTF-8 之外的编码
LV_INDEV_TYPE_ENCODER:新的编码器输入设备类型(左/右/按下)- 可选使用现有的时钟处理程序代替
lv_tick_inc(参见lv_conf_templ.h) - 主题可在运行时更改(在
lv_conf.h中设置LV_THEME_LIVE_UPDATE) - 新主题:Nemo
- 在文件系统接口中添加了
lv_fs_trunc和lv_fs_rename
