【案例讲解】LVGL GIF开机动画和关机动画

本文介绍了如何在LVGL中实现LVGL GIF开机动画和关机动画,包括覆盖其它图层、限制GIF只播放一次、通过长按OK键触发关机动画以及在完成时自动销毁对象的详细步骤和关键代码片段。
摘要由CSDN通过智能技术生成

更多源码分析请访问:LVGL 源码分析大全


1、功能特性

  • 1、播放一次完整的GIF后就退出,退出时并销毁对象,以节省资源;
  • 2、图层能覆盖在其它图层上,即出现这两个场景时,不显示其它内容;
  • 3、在任务场景下,长按OK键3秒后跳出关机动画

2、重点代码

2.1、 覆盖其它图层

LVGL本身有多个图层,我们采用最高的图层来画开机

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
lvgl中,可以使用`lv_anim_t`结构体来实现动画的播放和控制。如果需要判断GIF动画是否播放完毕,可以使用该结构体的`start_cb`和`end_cb`成员函数来实现。 具体地,可以通过设置`end_cb`回调函数来判断GIF动画是否播放完毕。当动画播放结束时,该回调函数将被调用。例如: ```c static void gif_anim_end_cb(lv_anim_t *anim) { lv_gif_t *gif = anim->var; if (gif->play_cnt > 0 && ++gif->play_cnt >= gif->playback_count) { // 播放次数达到上限,停止播放 lv_gif_stop(gif); } } ``` 在回调函数中,可以通过判断动画的播放次数和播放上限来确定是否停止播放。如果不需要限制播放次数,可以忽略这一部分。 然后,在开始播放GIF动画时,可以将上述回调函数设置为`end_cb`,例如: ```c lv_gif_t *gif = lv_gif_create(parent, NULL); lv_gif_set_src(gif, "path/to/gif/file.gif"); lv_anim_t anim; lv_anim_init(&anim); lv_anim_set_var(&anim, gif); lv_anim_set_exec_cb(&anim, (lv_anim_exec_xcb_t)lv_gif_set_frame); lv_anim_set_values(&anim, 0, lv_gif_get_frame_count(gif) - 1); lv_anim_set_time(&anim, lv_gif_get_anim_time(gif)); lv_anim_set_playback_time(&anim, lv_gif_get_anim_time(gif)); lv_anim_set_repeat_count(&anim, LV_ANIM_REPEAT_INFINITE); lv_anim_set_ready_cb(&anim, NULL); lv_anim_set_start_cb(&anim, NULL); lv_anim_set_end_cb(&anim, gif_anim_end_cb); lv_anim_start(&anim); ``` 这里使用了`lv_anim_t`结构体来实现动画的播放,并将GIF动画指针作为`var`成员变量传递给了动画对象。在设置`end_cb`回调函数时,将上述函数`gif_anim_end_cb`设置为回调函数即可。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bigan(安)

打赏100可获技术支持一次

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值