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

使用lvgl展示gif图片

lvgl 9.3.0

要求:因为项目需求,需要在嵌入板上展示gif图片作为表情,在当前gif播放完成后,切换到下一个表情

实现逻辑:

1、使用lv_gif_set_src(gif, ASSETS "1.gif")设置要显示的图片

2、lv_gif_set_loop_count(gif, 1),设置gif只播放一边

3、lv_obj_add_event_cb(gif, gif_cb_handle, LV_EVENT_READY),设置READY事件回调

4、在gif_cb_handle函数中,再通过lv_gif_set_src来切换下一张图片。

 

出现问题:

gif_cb_handle确实会被回调,并且其中也正常调用了lv_gif_set_src来切换图片,但是屏幕显示没有任何反应。

 

修改:

    修改next_frame_task_cb函数中,当判断到没有下一帧时,if中的逻辑,调换lv_timer_pause(t) 和 lv_obj_send_event两行的顺序即可。如图:

image

 

原理解释:当gif显示到最后一针时,即函数gd_get_frame的返回为0时,会进入到if (has_next == 0) 的分支中;原代码是先执行lv_obj_send_event(obj, LV_EVENT_READY, NULL),再执行lv_timer_pause(t),因为在lv_obj_send_event(LV_EVENT_READY)时,gif的回调gif_cb_handle会执行,在其中执行了lv_gif_set_src切换图片,lv_gif_set_src的最后会执行lv_timer_resume,这个函数会让gif的定时回调继续执行;但是当回调执行完成,返回到next_frame_task_cb后,lv_obj_send_event执行返回时,下一行调用了lv_timer_pause(t),让gif的定时回调暂停了,那么就会导致第二张gif的事件回调不会再执行,也就是虽然你切换了图片,但实际上切换后的图片是出于暂停状态;因此需要将lv_obj_send_event和lv_timer_pause进程调换位置即可。

 

http://www.sczhlp.com/news/21932/

相关文章:

  • AI项目管理-项目延期率压降至10%以内可验证成果
  • P1543 [POI 2004] SZP
  • 厦门淘宝网站设计公司google浏览器官网入口
  • 关于销售网站建设的短文seo排名的公司
  • 不同的网站有不同的风格微营销系统
  • 自己的网站怎么做跳转seo百度站长工具
  • pg批量删除大表数据
  • 嗯哦哎批膜你赛咋题
  • 测试测试
  • 怎么做网站的三级目录网站优化排名软件哪些最好
  • 自己做轴承网站百度搜索推广的定义
  • 创建网站数据库网络营销有哪些例子
  • 网站文章排版的重要性网络推广和网站推广
  • 做十个网站域名检测查询
  • 软件下载网站cmsseo的方式有哪些
  • 图片制作微信表情包搜索引擎优化自然排名的优点
  • 网页设计师联盟网站百度百科官网入口
  • 兴宁电子商务网站建设广州网站排名优化报价
  • 只用php做网站网上企业推广
  • S32K3 EMIOS
  • 路由跳转
  • 数据库 网站 模板湘潭网站制作
  • 网站上传空间沈阳seo关键词
  • 深圳公司网站制作刷seo关键词排名软件
  • 慕课网站开发文档网站运营一个月多少钱
  • 应用分析网站怎么去推广自己的公司
  • 服务器出租网站在线识图
  • 怀来网站建设搜索引擎关键词排名优化
  • 建站行业成为买方市场友情链接出售
  • 公司做网站找谁公司做网站找谁百度免费咨询