当前位置: 首页 > news >正文

LVGL(lv_animimg)

文章目录

    • 🧠 1. lv\_animimg 是什么?
    • 🧩 2. 使用步骤概览
      • ✨ 基本流程如下:
    • 🎞️ 3. 示例讲解
      • 🎯 示例:播放一个三帧的 PNG 动画
        • 🔧 准备三张帧图:
        • ⚙️ 播放动画:
    • ⚙️ 4. 常用函数
    • 🚩 5. 注意事项
    • 🖼️ 6. 效果展示(示意)
    • ✅ 7. 实用扩展


lv_animimgLVGL(Light and Versatile Graphics Library) 中用于实现 图像帧动画 的对象,适合播放类似 GIF 动画或帧序列图(如 PNG 序列)的动画效果。


🧠 1. lv_animimg 是什么?

lv_animimg 是一个继承自 lv_obj 的对象,内部封装了 LVGL 的动画引擎 + 图像组件,用于 在一组图像之间循环播放

简单来说,就是你提供一组图片,它可以按照设置好的帧率进行播放,形成动画。


🧩 2. 使用步骤概览

✨ 基本流程如下:

// 1. 创建 animimg 对象
lv_obj_t *animimg = lv_animimg_create(lv_scr_act());// 2. 设置帧图像
lv_animimg_set_src(animimg, img_dsc_array, img_num); // 图片数组 + 数量// 3. 设置播放间隔
lv_animimg_set_duration(animimg, 1000); // 总动画时长(单位 ms)
lv_animimg_set_repeat_count(animimg, LV_ANIM_REPEAT_INFINITE); // 无限重复// 4. 启动动画
lv_animimg_start(animimg);

🎞️ 3. 示例讲解

🎯 示例:播放一个三帧的 PNG 动画

🔧 准备三张帧图:
LV_IMG_DECLARE(frame_1);
LV_IMG_DECLARE(frame_2);
LV_IMG_DECLARE(frame_3);
⚙️ 播放动画:
static const lv_img_dsc_t *frames[] = {&frame_1,&frame_2,&frame_3,
};lv_obj_t *animimg = lv_animimg_create(lv_scr_act());
lv_animimg_set_src(animimg, frames, 3);       // 设置帧和数量
lv_animimg_set_duration(animimg, 900);        // 一次播放用时 900 ms
lv_animimg_set_repeat_count(animimg, LV_ANIM_REPEAT_INFINITE); // 无限循环
lv_animimg_start(animimg);                    // 启动播放

⚙️ 4. 常用函数

函数功能
lv_animimg_create(parent)创建动画对象
lv_animimg_set_src(obj, img_dsc[], count)设置帧图片数组和数量
lv_animimg_set_duration(obj, time_ms)设置一次播放的总时长
lv_animimg_set_repeat_count(obj, n)设置重复次数(或 LV_ANIM_REPEAT_INFINITE)
lv_animimg_start(obj)开始动画播放
lv_animimg_stop(obj)停止动画播放
lv_animimg_set_playback_delay(obj, ms)播放完后延时多久倒放(可选)
lv_animimg_set_playback_time(obj, ms)设置倒放总时间(可选)

🚩 5. 注意事项

  • 所有帧图片应 大小一致,否则播放可能出现闪烁。
  • 图片格式要用 lv_img_dsc_t 类型声明(支持使用 LV_IMG_DECLARE() 宏)。
  • 动画是通过 lv_timer 控制的,确保 LVGL 的 tick 正常工作。
  • 图片数组生命周期要长于 animimg 对象。

🖼️ 6. 效果展示(示意)

比如播放三帧的一个加载圈:

[🔁frame_1] → [🔁frame_2] → [🔁frame_3] → ...

视觉上就形成了流畅的帧动画。


✅ 7. 实用扩展

你可以使用 LVGL 的图像转换工具lv_img_convimage converter online)将 PNG/JPEG 批量转换为 C 源码帧数组,然后塞给 lv_animimg 实现高效动画播放。


相关文章:

  • 当前上下文中不存在名称“X509CertificateLoader”,编译.NET 9依赖
  • 数据库入门教程:以商品订单系统为例
  • LeetCode百题刷004(哈希表优化两数和问题)
  • NGINX 用户标识模块 (ngx_http_userid_module) 完整配置与最佳实践指南
  • 图论:floyed算法
  • java枚举和mybaits-plus结合实现映射输出和存储
  • 图论 判断是否有环
  • sqli-labs第二十八关——Trick with ‘union select‘
  • STM32G0xx基于串口(UART)Ymodem协议实现OTA升级包括Bootloader、上位机、应用程序
  • 语音识别——文本转语音
  • leetcode617.合并二叉树:递归思想下的树结构融合艺术
  • [yolov11改进系列]基于yolov11引入特征增强注意力机制ADNet的python源码+训练源码
  • 深度学习入门6:pytorch卷积神经网络CNN实现手写数字识别准确率99%
  • 从万有引力到深度学习,认识模型思维
  • 地理卷积神经网络加权回归模型的详细实现方案
  • 电池预测 | 第28讲 基于CNN-GRU的锂电池剩余寿命预测
  • java性能分析工具(perfino和Jprofiler简单对比)
  • LSTM三个门控机制详解
  • 深度学习在图像识别中的创新应用及其挑战
  • 技术视界 | 打造“有脑有身”的机器人:ABC大脑架构深度解析(上)
  • 平面设计公司属于什么行业类别/互联网广告优化
  • 网站备案 接入商名称/市场调研问卷调查怎么做
  • 银川市住房和城乡建设局网站/企业自助建站
  • ui网站建设站评价/互联网宣传推广
  • 南京做企业网站公司哪家好/网站设计方案
  • 网站移动页面怎么做/大数据下的精准营销