LVGL环形加载器
文章目录
- 🌀 `lv_spinner` 是什么?
- ✅ 创建一个 `lv_spinner`
- 示例代码:
- 📌 参数说明
- 🎨 样式定制
- 🧠 补充技巧
- 🧩 示例:自定义样式加载圈
lv_spinner
是 LVGL(Light and Versatile Graphics Library)中用来显示加载中或等待状态的 环形动画控件,常用于“加载中”的提示场景,比如网络请求、初始化等过程。
🌀 lv_spinner
是什么?
lv_spinner
是基于 lv_arc
的控件,通过动态旋转和样式设置,实现一个持续旋转的加载动画 —— 就像手机 App 启动时常见的转圈图标。
✅ 创建一个 lv_spinner
示例代码:
lv_obj_t *spinner = lv_spinner_create(lv_scr_act(), 1000, 60); // 父对象、周期(ms)、角度变化步长
lv_obj_set_size(spinner, 100, 100); // 设置大小
lv_obj_center(spinner); // 居中
📌 参数说明
lv_obj_t * lv_spinner_create(lv_obj_t * parent, uint32_t time, uint32_t arc_length);
参数 | 含义 |
---|---|
parent | 父对象(一般是 lv_scr_act() ) |
time | 动画周期时间(单位:ms)——旋转一圈的时间 |
arc_length | 弧长(单位:角度)旋转段所占角度 |
例如:time = 1000
和 arc_length = 60
,意味着 60° 弧线以 1 秒钟速度旋转一圈。
🎨 样式定制
你可以通过 lv_obj_set_style_*()
函数来美化外观,例如:
lv_obj_set_style_arc_width(spinner, 8, LV_PART_MAIN); // 设置弧线宽度
lv_obj_set_style_arc_color(spinner, lv_palette_main(LV_PALETTE_BLUE), LV_PART_INDICATOR);
常用样式有:
函数名 | 含义 |
---|---|
lv_obj_set_style_arc_color() | 设置弧线颜色 |
lv_obj_set_style_arc_width() | 设置弧线宽度 |
lv_obj_set_style_bg_opa() | 设置背景透明度 |
lv_obj_set_style_radius() | 设置圆角(一般不需设置) |
🧠 补充技巧
lv_spinner
是基于lv_arc
动画的自动组件,不需要自己写动画回调;- 可以配合状态栏或弹窗使用,提示用户“正在处理”;
- 动画是 LVGL 内部使用
lv_anim
模块实现的,性能非常高效。
🧩 示例:自定义样式加载圈
lv_obj_t *spinner = lv_spinner_create(lv_scr_act(), 800, 90);
lv_obj_set_size(spinner, 80, 80);
lv_obj_center(spinner);lv_obj_set_style_arc_width(spinner, 6, LV_PART_INDICATOR);
lv_obj_set_style_arc_color(spinner, lv_palette_main(LV_PALETTE_GREEN), LV_PART_INDICATOR);lv_obj_set_style_bg_opa(spinner, LV_OPA_TRANSP, LV_PART_MAIN); // 背景透明