说明

最近项目中有使用到gif动画,加上本身已经引入了Glide 3.7.0(支持gif)库,所以便用Glide来加载了;但在使用过程中还是遇到了不少困难, 在此记录下,希望可以给遇到类似问题的你一些思考和建议。

简单使用

如果你还不了解Glide库, 可移步https://github.com/bumptech/glide

同加载普通图片一样,使用如下代码即可加载gif动画

Glide.with(this).load(...).asGif().into(...)

需要注意的是如果加载的图片不是gif,则asGif()会报错, 当然,asGif()不写也是可以正常加载的。

Gif动画播放的一些控制

有的时候我们需要控制动画的播放次数,而默认的加载则是循环播放的,而Glide也没有开放单独的api接口用来控制gif,这时可以通过GlideDrawableImageViewTarget(view, int)来实现, 其中第二个参数表示播放的次数:

Glide.with(this).load(...).into(new GlideDrawableImageViewTarget(iv, 1));

如果需要监听动画播放完成呢?我的思路是添加一个RequestListener,获取加载的gif的播放时间time,延时time时长后发起播放结束消息,大致可以实现播放的监听。完整例子如下:

Glide.with(this).load(R.drawable.third_animation).listener(new RequestListener() {

@Override

public boolean onException(Exception e, Integer model, Target target, boolean isFirstResource) {

return false;

}

@Override

public boolean onResourceReady(GlideDrawable resource, Integer model, Target target, boolean isFromMemoryCache, boolean isFirstResource) {

Observable.just(resource)

.flatMap(new Func1>() {

@Override

public Observable> call(GlideDrawable glideDrawable) {

int duration = 0;

try {

GifDrawable gifDrawable = (GifDrawable) glideDrawable;

GifDecoder decoder = gifDrawable.getDecoder();

for (int i = 0; i < gifDrawable.getFrameCount(); i++) {

duration += decoder.getDelay(i); }

} catch (Throwable e) {

}

return Observable.just(null).delay(duration, TimeUnit.MILLISECONDS);

}

})

.observeOn(AndroidSchedulers.mainThread())

.subscribeOn(Schedulers.io())

.subscribe(new Action1() {

@Override

public void call(Object o) {

// 加载完成后的处理...

}

});

return false;

}}).into(new GlideDrawableImageViewTarget(welcomeGif2, 1));

别再评论说代码报错了

好多个同学都留言说代码有问题,GlideDrawableImageViewTarget报错...遇到错误先排查下自己代码有没有问题...附代码截图:

glide加载gif图不显示动画_Glide 加载gif的一些个人总结相关推荐

  1. glide加载gif图不显示动画_用Python绘制会动的柱形竞赛图

    我们经常看到的Bar Chart Race(柱形竞赛图),可以看到数据的呈现非常的直观.今天就一起来学习下如何生成和上面一样的柱形竞赛图. 1.导入Python库 2.加载数据集 这里使用的是城市人口 ...

  2. glide加载gif图不显示动画_关于glide加载gif问题

    我只能提供代码 case ExpressionManager.EXPRESSION_STANDBY: resId = R.raw.standby; // resId = R.mipmap.test_o ...

  3. Android加载长图滑动显示

    1.记录下学到的Android加载长图写法以备后用 首先准备一张长图.这里把图片先放到项目的 assets文件夹下:命名为big.png 然后开始自定义显示长图的view :BigView impor ...

  4. 在PictureBox加载图片时,显示等待,加载完毕后再显示真正的图片

    void Button1Click(object sender, EventArgs e) { //图片异步加载完成后的处理事件 pictureBox1.LoadCompleted += new As ...

  5. 新加硬盘但计算机里找不着,win10新加的硬盘为什么不显示_win10新加的硬盘不显示恢复方法-win7之家...

    对于我们经常使用的win10电脑,许多用户都很担心自己电脑中内存的不足,因此就会选择给电脑添加一个新硬盘,然而有些用户在给win10系统添加新硬盘的时候却总是不显示出来,那么win10新加的硬盘为什么 ...

  6. webview加载html图片不显示图片,WebView加载网页不显示图片解决办法

    对于大家来讲WebView肯定很熟悉,因为我们在日常开发中经常用到它.所以对于它的一些基本用法我就不在这啰嗦了,直接进入正题. 我遇到的问题就是在使用WebView加载网页的时候图片不显示(我手机系统 ...

  7. android 漫画加载方案,Android加载长图的多种方案分享

    背景介绍 在某些特定场景下,我们需要考虑加载长图的需求,比如加载一幅<清明上河图>,这个好像有点过分了,那就加载1/2的<清明上河图>吧... 那TMD还不是一样道理. 言归正 ...

  8. Echarts使用及动态加载图表数据 折线图X轴数据动态加载

    Echarts简介 echarts,缩写来自Enterprise Charts,商业级数据图表,一个纯Javascript的图表库,来自百度...我想应该够简洁了 使用Echarts 目前,就官网的文 ...

  9. Glide加载部分图片不显示问题

    Glide版本为4及其以上 图片不显示原因 没有添加INTERNET网络权限 老版本Glide无法加载https图片(需要使用okhttp忽略证书) 图片Url无法连接 图片返回数据不全且格式不正确 ...

  10. android加载长图宽度自适应,Android使用Glide加载超长图

    app项目开发过程中,大都有查看图片详情的功能模块.实现的方式一般都是通过viewpager+photoView+Glide的方式.这种方式下,如果碰到加载超长图,比如说高清版的清明上河图/世界地图, ...

最新文章

  1. Groovy 设计模式 -- 保镖模式
  2. 上项线体表位置_实用人体体表解剖:头颈部(高清大图版)
  3. MySQL管理员指南
  4. SAP应用真的不性感么
  5. 华三1822-24路由交换机配置例子
  6. json阅读器_Flutter小说阅读器系列一:使用Bloc模式获取起点小说关键字提示
  7. 【算法分析与设计】所有结点对的最短路径算法
  8. 系统管理员最应该读的5本书_系统管理员的8本书
  9. adb dumpsys 查看手机内存
  10. 手机页面rem响应式布局
  11. WSL:适用于 Linux 的 Windows 子系统
  12. 编码的奥秘:自动操作
  13. 小白入门,Shell脚本,编写脚本显示信息,编写脚本自动创建文件,编写脚本对数据进行双硬盘备份
  14. ARCore学习指引四剑客:原生、Unity、Unreal和WebAR
  15. 原神手游显示无法连接服务器,原神手游进不去怎么办 游戏无法登录解决方法...
  16. mysql创建视图并加注释_在mysql中为视图创建注释
  17. python 列表解析式
  18. 自定义鼠标指针图案每次开机或者重启都会重置的解决办法
  19. linux命令du -sh,du命令_Linux du 命令用法详解:显示每个文件和目录的磁盘使用空间...
  20. 一元二次求解matlab程序,规范MATLAB编程实例——求解一元二次方程

热门文章

  1. (转)关于第一行代码中NotificationCompat失效的解决方法
  2. [摩斯密码表]摩斯密码对照表
  3. 联想主板9针开关接线图_收藏丨34个电气控制接线图、电子元件工作原理图
  4. 【23】数据可视化:基于 Echarts + Python 动态实时大屏范例 - Redis 数据源
  5. PMP 管理学6大定律之四(光环效应)
  6. android 官方增量更新,Android 如何实现增量更新
  7. 数学4如何用计算机画正切函数图像,《正切函数的图像与性质》示范公开课教学设计【高中数学必修4(北师大版)】.doc...
  8. 微信小程序图片上传并预览
  9. 最全的芯片封装技术详细介绍(珍藏版)
  10. 1301_两种方式为开发板增加串口监控功能