天天跟我要展现gif图demo的人不少,我有点纳闷,你们不知道不少第三方库均可以加载gif吗?好比Glide和Fresco均可以啊,你们不用它加载gif图吗?我有点纳闷,这几个方式加载的效果都还能够。固然也有点坑在里面,须要你们注意一下。java
我之前写的那个关于gif图的demo实际上是很早之前写的,可是那时候水平很菜,好几年前了,也不是彻底本身写的,参考的别人写的,以后本身整理的。因此很不咋的。我发现天天都有人跟我要展现gif的demo,我想分享给你们展现gif图的几个好用的库。android
若是用过Glide的同窗可能你们都知道Glide是谷歌的一位员工开源的,名字叫:bumptech。这个库被普遍的运用在google的开源项目中,这个Glide说到底和Picasso很像,Glide和Picasso有90%的类似度,应该是基于Picasso开发的。可是Glide是支持动态gif图的。程序员
其实和加载普通图片的方式是同样的,以下:缓存
Glide.with(this).load("图片地址:url").asGif().into(iv);复制代码
这里若是使用了.asGif()方法的话,传入的图片必须是gif图,其余图会报错。固然不使用.asGif()方法一样也能够加载gif图。微信
你觉得这样就能够了吗?有时候有些坑你们不得不踩,你有没有遇到过加载gif图很慢或者出不来的状况?有的话,解决办法咱也是有的,以下:ide
Glide.with(this).load(url).asGif().diskCacheStrategy(DiskCacheStrategy.SOURCE).into(imageView);复制代码
加入了缓存策略,缓存策略有四种以下:oop
/** Caches with both {@link #SOURCE} and {@link #RESULT}. */
ALL(true, true),
/** Saves no data to cache. */
NONE(false, false),
/** Saves just the original data to cache. */
SOURCE(true, false),
/** Saves the media item after all transformations to cache. */
RESULT(false, true);复制代码
ALL和RESULT的缓存策略不能够,NONE是不缓存数据,SOURCE是缓存原型,原图。加上了如上的缓存策略就解决了很慢或者有时加载不出gif图的问题了。this
可能你们还有一种要求就是,动态显示gif图的次数,好比我想显示一次gif就中止,也有解决办法以下:google
Glide.with(this).load("url").diskCacheStrategy(DiskCacheStrategy.SOURCE).into(new GlideDrawableImageViewTarget(iv, 1));复制代码
这里的GlideDrawableImageViewTarget(ImageView view, int maxLoopCount)这个方法,maxloopCount能够控制显示次数,你不信试试。url
还有一些话,是给投稿做者的,很抱歉,最近投稿的人挺多的,因此是排队发送的投稿文章,大家投稿的文章,我必定会推送的,还请按顺序耐心等待推送,我必定会对得起你们的推送,让更多的人看到大家的分享和无私奉献的精神,在这里我替看到大家文章的开发者感谢大家的投稿。
欢迎你们关注个人技术分享公众号:非著名程序员(smart_android)。技术文章均先首发于个人技术分享的微信公众号。