glide加载gif图不显示动画_Glide 加载gif的一些个人总结
说明
最近项目中有使用到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的一些个人总结相关推荐
- glide加载gif图不显示动画_用Python绘制会动的柱形竞赛图
我们经常看到的Bar Chart Race(柱形竞赛图),可以看到数据的呈现非常的直观.今天就一起来学习下如何生成和上面一样的柱形竞赛图. 1.导入Python库 2.加载数据集 这里使用的是城市人口 ...
- glide加载gif图不显示动画_关于glide加载gif问题
我只能提供代码 case ExpressionManager.EXPRESSION_STANDBY: resId = R.raw.standby; // resId = R.mipmap.test_o ...
- Android加载长图滑动显示
1.记录下学到的Android加载长图写法以备后用 首先准备一张长图.这里把图片先放到项目的 assets文件夹下:命名为big.png 然后开始自定义显示长图的view :BigView impor ...
- 在PictureBox加载图片时,显示等待,加载完毕后再显示真正的图片
void Button1Click(object sender, EventArgs e) { //图片异步加载完成后的处理事件 pictureBox1.LoadCompleted += new As ...
- 新加硬盘但计算机里找不着,win10新加的硬盘为什么不显示_win10新加的硬盘不显示恢复方法-win7之家...
对于我们经常使用的win10电脑,许多用户都很担心自己电脑中内存的不足,因此就会选择给电脑添加一个新硬盘,然而有些用户在给win10系统添加新硬盘的时候却总是不显示出来,那么win10新加的硬盘为什么 ...
- webview加载html图片不显示图片,WebView加载网页不显示图片解决办法
对于大家来讲WebView肯定很熟悉,因为我们在日常开发中经常用到它.所以对于它的一些基本用法我就不在这啰嗦了,直接进入正题. 我遇到的问题就是在使用WebView加载网页的时候图片不显示(我手机系统 ...
- android 漫画加载方案,Android加载长图的多种方案分享
背景介绍 在某些特定场景下,我们需要考虑加载长图的需求,比如加载一幅<清明上河图>,这个好像有点过分了,那就加载1/2的<清明上河图>吧... 那TMD还不是一样道理. 言归正 ...
- Echarts使用及动态加载图表数据 折线图X轴数据动态加载
Echarts简介 echarts,缩写来自Enterprise Charts,商业级数据图表,一个纯Javascript的图表库,来自百度...我想应该够简洁了 使用Echarts 目前,就官网的文 ...
- Glide加载部分图片不显示问题
Glide版本为4及其以上 图片不显示原因 没有添加INTERNET网络权限 老版本Glide无法加载https图片(需要使用okhttp忽略证书) 图片Url无法连接 图片返回数据不全且格式不正确 ...
- android加载长图宽度自适应,Android使用Glide加载超长图
app项目开发过程中,大都有查看图片详情的功能模块.实现的方式一般都是通过viewpager+photoView+Glide的方式.这种方式下,如果碰到加载超长图,比如说高清版的清明上河图/世界地图, ...
最新文章
- Groovy 设计模式 -- 保镖模式
- 上项线体表位置_实用人体体表解剖:头颈部(高清大图版)
- MySQL管理员指南
- SAP应用真的不性感么
- 华三1822-24路由交换机配置例子
- json阅读器_Flutter小说阅读器系列一:使用Bloc模式获取起点小说关键字提示
- 【算法分析与设计】所有结点对的最短路径算法
- 系统管理员最应该读的5本书_系统管理员的8本书
- adb dumpsys 查看手机内存
- 手机页面rem响应式布局
- WSL:适用于 Linux 的 Windows 子系统
- 编码的奥秘:自动操作
- 小白入门,Shell脚本,编写脚本显示信息,编写脚本自动创建文件,编写脚本对数据进行双硬盘备份
- ARCore学习指引四剑客:原生、Unity、Unreal和WebAR
- 原神手游显示无法连接服务器,原神手游进不去怎么办 游戏无法登录解决方法...
- mysql创建视图并加注释_在mysql中为视图创建注释
- python 列表解析式
- 自定义鼠标指针图案每次开机或者重启都会重置的解决办法
- linux命令du -sh,du命令_Linux du 命令用法详解:显示每个文件和目录的磁盘使用空间...
- 一元二次求解matlab程序,规范MATLAB编程实例——求解一元二次方程
热门文章
- (转)关于第一行代码中NotificationCompat失效的解决方法
- [摩斯密码表]摩斯密码对照表
- 联想主板9针开关接线图_收藏丨34个电气控制接线图、电子元件工作原理图
- 【23】数据可视化:基于 Echarts + Python 动态实时大屏范例 - Redis 数据源
- PMP 管理学6大定律之四(光环效应)
- android 官方增量更新,Android 如何实现增量更新
- 数学4如何用计算机画正切函数图像,《正切函数的图像与性质》示范公开课教学设计【高中数学必修4(北师大版)】.doc...
- 微信小程序图片上传并预览
- 最全的芯片封装技术详细介绍(珍藏版)
- 1301_两种方式为开发板增加串口监控功能