1,解决Glide加载Gif非常慢问题

Glide.with(MainActivity.this).load(url).asGif().diskCacheStrategy(DiskCacheStrategy.SOURCE).into(imageView);  

为其添加缓存策略,其中缓存策略可以为:Source及None,None及为不缓存,Source缓存原型.如果为ALL和Result就不行

2,加载第一贞:

Glide.with(context).load(gifUrl).asBitmap().into(imageViewGifAsBitmap);

3,控制动画次数:

Glide.with(this).load(getResource()).diskCacheStrategy(DiskCacheStrategy.SOURCE).into(new GlideDrawableImageViewTarget(imageView, 1));

4,GIF 时间:

                        Glide.with(FirstActivity.this).load(file).asGif().fitCenter().diskCacheStrategy(DiskCacheStrategy.SOURCE).listener(new RequestListener<File, GifDrawable>() {@Overridepublic boolean onException(Exception e, File model, Target<GifDrawable> target, boolean isFirstResource) {return false;}@Overridepublic boolean onResourceReady(final GifDrawable resource, File model, Target<GifDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {new Thread(new Runnable() {@Overridepublic void run() {int duration = 0;try {GifDrawable gifDrawable = (GifDrawable) resource;GifDecoder decoder = gifDrawable.getDecoder();for (int i = 0; i < gifDrawable.getFrameCount(); i++) {duration += decoder.getDelay(i);}mGifAdTime = duration;} catch (Throwable e) {}}}).start();return false;}}).into(mAdImg);

4.+ Glide版本获取gif时间

Glide.with(FirstActivity.this).asGif().load(file).fitCenter().diskCacheStrategy(DiskCacheStrategy.DATA).listener(new RequestListener<GifDrawable>() {@Overridepublic boolean onLoadFailed(@Nullable GlideException e, Object model, Target<GifDrawable> target, boolean isFirstResource) {return false;}@Overridepublic boolean onResourceReady(final GifDrawable resource, Object model, Target<GifDrawable> target, DataSource dataSource, boolean isFirstResource) {new Thread(new Runnable() {@Overridepublic void run() {// 计算动画时长int duration = 0;try {GifDrawable gifDrawable = (GifDrawable) resource;//设置循环播放次数为1次gifDrawable.setLoopCount(1);//GifDecoder decoder = gifDrawable.getDecoder();//4.0开始没有这个方法了Drawable.ConstantState state = gifDrawable.getConstantState();if (state != null) {//不能混淆GifFrameLoader和GifState类Object gifFrameLoader = GlideGifUtil.getValue(state, "frameLoader");if (gifFrameLoader != null) {Object decoder = GlideGifUtil.getValue(gifFrameLoader, "gifDecoder");if (decoder != null && decoder instanceof GifDecoder) {for (int i = 0; i < gifDrawable.getFrameCount(); i++) {duration += ((GifDecoder) decoder).getDelay(i);}}}}} catch (Throwable e) {}}}).start();return false;}}).into(mAdImg);
public class GlideGifUtil {/*** 通过字段名从对象或对象的父类中得到字段的值** @param object    对象实例* @param fieldName 字段名* @return 字段对应的值* @throws Exception*/public static Object getValue(Object object, String fieldName) throws Exception {if (object == null) {return null;}if (TextUtils.isEmpty(fieldName)) {return null;}Field field = null;Class<?> clazz = object.getClass();for (; clazz != Object.class; clazz = clazz.getSuperclass()) {try {field = clazz.getDeclaredField(fieldName);field.setAccessible(true);return field.get(object);} catch (Exception e) {//这里甚么都不要做!并且这里的异常必须这样写,不能抛出去。//如果这里的异常打印或者往外抛,则就不会执行clazz = clazz.getSuperclass(),最后就不会进入到父类中了}}return null;}
}

转载于:Android使用Glide加载Gif慢 获取gif时间 - 走看看

Android使用Glide加载Gif慢 获取gif时间相关推荐

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

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

  2. Android之glide加载圆形图片地址异常监听

    1 问题 glide加载图片地址的时候,可能这个地址没有图片,那么我们需要对这种异常情况进行处理,当然我们也需要把这个图片进行圆形化 2 代码解决 Glide.with(mContext).load( ...

  3. Android使用Glide加载Gif.解决Glide加载Gif非常慢问题

    在Glide文档中找了半天没发现加载Gif的方式.然后通过基本的用法去加载: Glide.with(MainActivity.this).load(url).asGif().into(imageVie ...

  4. Android之glide加载图片圆角效果

    1 问题 Android加载图片需要圆角化,有什么简单粗暴的方法吗?当然有,用我们的神器glide 2 解决办法 1)简单办法 ImageView imageView = (ImageView)hel ...

  5. Android标准Glide加载圆形图和圆角矩形图

    引入: implementation 'com.github.bumptech.glide:glide:4.9.0'annotationProcessor 'com.github.bumptech.g ...

  6. Android中Glide加载Https图片失败的解决方案(记录)

    1.在Application中添加如下方法: public static void handleSSLHandshake() {try {TrustManager[] trustAllCerts = ...

  7. Android Glide加载图片成圆形

    今天,简单讲解android使用glide加载图片成圆形. 这个很简单,因为之前需要在RecyclerView里加载圆形图片,所以在网上查找了资料,很简单就解决了. 1.导入依赖 implementa ...

  8. android glide圆形图片,Android Glide加载图片成圆形

    释放双眼,带上耳机,听听看~! 今天,简单讲解android使用glide加载图片成圆形. 这个很简单,因为之前需要在RecyclerView里加载圆形图片,所以在网上查找了资料,很简单就解决了. 1 ...

  9. android glide加载不出图片_Glide实现共享元素无缝转场效果,只需四步!

    原文: How to Use Shared Element Transition with Glide in 4 steps 作者:Bartłomiej Osmałek 读完这篇文章, 你就会知道使用 ...

最新文章

  1. oracle 查询本周数据生成下周数据
  2. linux svn可视化工具,CentOS6.5安装SVN 可视化管理工具iF.SVNAdmin
  3. python lxml xpath爬取图片代码
  4. python的固定有没有固定字符_python每次处理固定个数的字符的方法总结
  5. mysql 日志抓取变化_MySQL慢查询日志分析提取【转】
  6. 常用头文件的可调用函数的归类笔记
  7. 读火狐带来的感动一文你有和感受?
  8. FP-growth发现频繁项集
  9. ubuntu20.4 安装配置teamviewer
  10. python 窗体句柄_Python pyautogui窗口句柄(Python pyautogui window handle)
  11. mysql中orderby用法_MySQL教程:OrderBy用法_MySQL
  12. Arduino开发板利用L298N电机驱动模块驱动直流电机
  13. 计算机配置音箱便宜,5款性价比高的电脑小音箱推荐(每一款音质都相当ok
  14. 16083001(古墓丽影GPA)
  15. 屏蔽html查看源代码,禁止查看网页源代码方法
  16. 【Unity2D】制作可以左右移动的平台
  17. 【干货】S7-PLCSIM Advanced V3.0 无法下载组态(搜索到设备地址为红色)问题解决方法
  18. bigemap大地图软件功能对比分析
  19. 打开Docx文件的方法
  20. 穿过心灵的彼岸(二)

热门文章

  1. 野火STM32F103指南者笔记1.寄存器点亮LED
  2. ZC706评估板IBERT调试中unlock和link问题
  3. Python爬取图片并保存本地
  4. 谈谈深度学习目标检测中的遮挡问题
  5. 转载《CSDC开发者大会感想》
  6. Win10强制更改/重置开机密码
  7. esxi主机配置iscsi_vSphere ESXi主机配置iSCSI存储-阿里云开发者社区
  8. 县域面板数据(2000-2019)一:国民经济核算+人口(面板数据,stata或excel版)
  9. python2.7升到python3.7的createrepo报错
  10. syntax error near unexpected token 脚本报错误解决【转】