LVSF v8 自定义控件示例合集
源码路径:example/multimedia/lvgl/lvsf_v8_examples
介绍
本工程演示 SiFli 在 LVGL v8 上的自定义控件(lvsf widgets)例程集中到同一个工程里:每个控件的演示代码是 src/widgets/<name>/ 下的一个独立子文件夹,一次编译只演示一个控件,想换一个控件看效果/接口用法时,只需在配置里把要演示的例程切换过去、重新编译烧录即可。
例程一览
配置选项 |
子文件夹 |
演示控件 |
入口函数 |
说明 |
|---|---|---|---|---|
|
|
|
|
图表控件,绘制一条/多条折线或柱状数据序列 |
|
|
|
|
内建数据刷新通路的标签,文本可跟随数据源周期更新 |
|
|
|
|
物理“重力”图标菜单,图标成环排布并随重力移动避让 |
|
|
|
|
用字形图片拼出数值,类似数码管/翻牌显示 |
|
|
|
|
用前景图片按数值裁切填充的图片进度条 |
|
|
|
|
多功能滚轮/转盘选择器,回调按需提供内容,居中吸附 |
|
|
|
|
多重过渡动画效果(动画图片) |
|
|
|
|
多功能列表,基于 gui_app_fwk 框架的多页面综合示例 |
|
|
|
|
简单声明式滚轮, |
|
|
|
|
圆形手柄上显示读数(或自定义短文本)的滑块 |
|
|
|
|
扇形(角度)遮罩,把图片按数值揭示成饼形 |
|
|
|
|
选择列表,每行显示选中/未选中图标,支持单选 |
|
|
|
|
通用动画时间线编排引擎,把时间区间映射到数值区间 |
每个子文件夹下都有该例程自己的 README.md / README_EN.md,包含控件概述、关键 API、典型用法和运行说明。要查看某个控件的接口调用方式,直接打开对应子文件夹的 demo_<name>.c 和 README 即可。
快速开始:切换要演示的控件
核心思路:选择控件例程(menuconfig 或改 proj.conf 二选一)→ 重新编译 → 烧录运行。下面以从默认的 basechart 切换到 multlist 为例。
方式二:直接改 proj.conf(脚本化/更直观)
用文本编辑器打开 project/proj.conf,文件末尾就是当前选中的例程:
# 默认运行的控件例程(choice,只能选一个);切换方法见 README「切换例程」
CONFIG_LV_WIDGET_DEMO_BASECHART=y
把它改成目标例程(把旧的一行删掉或留作注释,新的一行设为 y;choice 同一时间只能有一个为 y)。例如切换到 multlist:
# CONFIG_LV_WIDGET_DEMO_BASECHART=y
CONFIG_LV_WIDGET_DEMO_MULTLIST=y
可选的宏名就是上表“配置选项”列:LV_WIDGET_DEMO_BASECHART / BASELABEL / FOLLOW / IMGARRAY / IMGBAR / MULROLLER / MULTANIM / MULTLIST / MULTROLLER / MULTSLIDER / SECTOR / SELECT / TIMELINE。
改完保存,重新编译即可(无需手动删缓存,scons 检测到 proj.conf 变化会自动重新生成配置):
scons --board=sf32lb52-lcd_n16r8 -j8
提示:切换例程后务必重新编译并重新烧录,固件里只会包含当前选中那一个控件的演示代码。
编译和烧录
板子工程在 project 目录下,通过指定 board 编译(把 --board= 换成你的板子):
cd project
scons --board=sf32lb52-lcd_n16r8 -j8
烧录通过 build 目录下生成的 download.bat(或 uart_download.bat)进行;SF32LB52x/SF32LB56x 系列会额外生成 uart_download.bat,执行后输入下载 UART 端口号即可。
目录结构
lvsf_v8_examples/
├── README.md / README_EN.md # 本文件
├── assets/ # 图片资源(仅 multanim / multlist 需要)
│ └── SConscript # 按所选例程只打包对应图片
├── project/ # 构建工程(SConstruct / proj.conf / Kconfig ...)
└── src/
├── Kconfig # 控件例程选择菜单(choice)
├── SConscript # 只编译所选例程子目录的源码
├── main.c # 统一入口,按 Kconfig 宏调用对应例程入口
└── widgets/ # 每个控件例程一个子文件夹
├── basechart/ # demo_xxx.c/h + README
├── ...
└── multlist/ # gui_app_fwk 多页面示例(含多个 .c)
说明
一次只编译并运行一个例程;未选中例程的源码和图片不会参与编译,不占用固件空间。
multlist例程基于应用框架(gui_app_fwk),入口与其他例程不同,已在main.c中单独处理。需要文件系统资源(Lottie JSON、视频、字体文件)的例程(
lvgl_v8_lottie、lvgl_v8_media、lvgl_v8_freetype)未合入本工程,仍作为独立工程存在。控件 API 的详细说明见 SDK 文档《LVGL v8 自定义控件》章节。