每天跟我要展示gif圖demo的人很多,我有點納悶五续,大家不知道很多第三方庫都可以加載gif嗎洒敏?比如Glide和Fresco都可以啊,大家不用它加載gif圖嗎疙驾?我有點納悶凶伙,這幾個方式加載的效果都還可以。當(dāng)然也有點坑在里面它碎,需要大家注意一下函荣。
我以前寫的那個關(guān)于gif圖的demo其實是很早以前寫的,但是那時候水平很菜扳肛,好幾年前了傻挂,也不是完全自己寫的,參考的別人寫的挖息,之后自己整理的金拒。所以很不咋的。我發(fā)現(xiàn)每天都有人跟我要展示gif的demo套腹,我想分享給大家展示gif圖的幾個好用的庫绪抛。
Glide
如果用過Glide的同學(xué)可能大家都知道Glide是谷歌的一位員工開源的资铡,名字叫:bumptech。這個庫被廣泛的運用在google的開源項目中幢码,這個Glide說到底和Picasso很像笤休,Glide和Picasso有90%的相似度,應(yīng)該是基于Picasso開發(fā)的蛤育。但是Glide是支持動態(tài)gif圖的宛官。
Glide gif圖使用
其實和加載普通圖片的方式是一樣的,如下:
Glide.with(this).load("圖片地址:url").asGif().into(iv);
這里如果使用了.asGif()方法的話瓦糕,傳入的圖片必須是gif圖底洗,其他圖會報錯。當(dāng)然不使用.asGif()方法同樣也可以加載gif圖咕娄。
遇到的坑
你以為這樣就可以了嗎亥揖?有時候有些坑大家不得不踩,你有沒有遇到過加載gif圖很慢或者出不來的情況圣勒?有的話费变,解決辦法咱也是有的,如下:
Glide.with(this).load(url).asGif().diskCacheStrategy(DiskCacheStrategy.SOURCE).into(imageView);
加入了緩存策略圣贸,緩存策略有四種如下:
/** 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是不緩存數(shù)據(jù),SOURCE是緩存原型吁峻,原圖滑负。加上了如上的緩存策略就解決了很慢或者有時加載不出gif圖的問題了。
可能大家還有一種要求就是用含,動態(tài)顯示gif圖的次數(shù)矮慕,比如我想顯示一次gif就停止,也有解決辦法如下:
Glide.with(this).load("url").diskCacheStrategy(DiskCacheStrategy.SOURCE).into(new GlideDrawableImageViewTarget(iv, 1));
這里的GlideDrawableImageViewTarget(ImageView view, int maxLoopCount)這個方法啄骇,maxloopCount可以控制顯示次數(shù)痴鳄,你不信試試。
還有一些話缸夹,是給投稿作者的痪寻,很抱歉,最近投稿的人挺多的虽惭,所以是排隊發(fā)送的投稿文章槽华,你們投稿的文章,我一定會推送的趟妥,還請按順序耐心等待推送,我一定會對得起大家的推送佣蓉,讓更多的人看到你們的分享和無私奉獻(xiàn)的精神披摄,在這里我替看到你們文章的開發(fā)者感謝你們的投稿亲雪。