Android中GIF动图的播放控制和监听详解

Android中GIF动图的播放控制和监听详解,第1张

概述前言最近接手的项目里涉及到了GIF动图的播放监听,在上一版本中对于GIF的处理是由H5来实现的,因为考虑到用户体验,因此现在的需求是将这块儿原生化,途中差点误入歧途!下面来看看详细的介绍吧。

前言

最近接手的项目里涉及到了 GIF 动图的播放与监听,在上一版本中对于 GIF 的处理是由 H5 来实现的,因为考虑到用户体验,因此现在的需求是将这块儿原生化,途中差点误入歧途!下面来看看详细的介绍吧。

AndroID 中 GIF 动图处理与监听

刚开始第一个想到的便是 glIDe,但是自认为 glIDe 不能够控制 GIF 以及去监听它,所以网上去搜寻别的方法。看到有一个方案是将图片分帧,一张张的去用逐帧动画来实现。

我开始怀疑给这个解决方案的人了,都什么时代了还做这种费力不讨好,大量占用用户内存的东西!于是乎动手前又仔细 Google 了一番,答案着实令我尴尬,glIDe 是可以控制 GIF 动画的!!!

怒上代码 :使用glIDe 加载 GIF 动图

GlIDe.with(DoorActivity.this).load(R.drawable.opendoor).into(openDoorGif);

很简单的一行代码就可以搞定,以上方式图片和动图都可以加载(网络链接亦可)

下面是只可以加载 GIF 动图的写法:

GlIDe.with(DoorActivity.this).load(R.drawable.opendoor).asgif().into(openDoorGif);

其实就多了个 asgiF

但是这种方式下的动图播放一直是循环的,有什么方式可以停下来呢!没遇到过千万别说没必要,假如现在有一个需求,需要点击一下按钮来播放一次 GIF 实现与用户的交互呢?这个技能我想你肯定是要 get 的,因为类似需求你迟早会碰到!

下面写法实现了对 GIF 动图的控制

//handler发送消息成功的状态码private static final int MESSAGE_SUCCESS = 4424;//handler发送消息所携带的参数(持续时间)private int duration;/** * 加载开门Gif动图(只播放一次) * @param vIEw */public voID loadGif(VIEw vIEw){   GlIDe.with(this)   .load(R.drawable.opendoor)   .diskCacheStrategy(diskCacheStrategy.soURCE)   .Listener(new RequestListener<Integer,GlIDeDrawable>() {    @OverrIDe    public boolean onException(Exception arg0,Integer arg1,Target<GlIDeDrawable> arg2,boolean arg3) {      return false;     }    @OverrIDe    public boolean onResourceReady(GlIDeDrawable resource,Integer model,Target<GlIDeDrawable> target,boolean isFromMemoryCache,boolean isFirstResource) {     // 计算动画时长     Gifdrawable drawable = (Gifdrawable) resource;     GifDecoder decoder = drawable.getDecoder();     for (int i = 0; i < drawable.getFrameCount(); i++) {      duration += decoder.getDelay(i);     }     //发送延时消息,通知动画结束     //以下两个参数都是 int 型,记得如上的声明     handler.sendEmptyMessageDelayed(MESSAGE_SUCCESS,duration);      return false;     }    })      //仅仅加载一次gif动画     //此处的参数 1 及时指明播放次数    .into(new GlIDeDrawableImageVIEwTarget(openDoorGif,1)); }

使用这种方式就可以完美的实现对 GIF 的控制,对我遇到的需求提供了良性支持!

总结

以上就是这篇文章的全部内容了,希望本文的内容对给位AndroID开发者们能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对编程小技巧的支持。

总结

以上是内存溢出为你收集整理的Android中GIF动图的播放控制和监听详解全部内容,希望文章能够帮你解决Android中GIF动图的播放控制和监听详解所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1146208.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-31
下一篇2022-05-31

发表评论

登录后才能评论

评论列表(0条)

    保存