Glide 展現 gif 動態圖的介紹和走過的坑

天天跟我要展現gif圖demo的人不少,我有點納悶,你們不知道不少第三方庫均可以加載gif嗎?好比Glide和Fresco均可以啊,你們不用它加載gif圖嗎?我有點納悶,這幾個方式加載的效果都還能夠。固然也有點坑在裏面,須要你們注意一下。java

我之前寫的那個關於gif圖的demo實際上是很早之前寫的,可是那時候水平很菜,好幾年前了,也不是徹底本身寫的,參考的別人寫的,以後本身整理的。因此很不咋的。我發現天天都有人跟我要展現gif的demo,我想分享給你們展現gif圖的幾個好用的庫。android

Glide

若是用過Glide的同窗可能你們都知道Glide是谷歌的一位員工開源的,名字叫:bumptech。這個庫被普遍的運用在google的開源項目中,這個Glide說到底和Picasso很像,Glide和Picasso有90%的類似度,應該是基於Picasso開發的。可是Glide是支持動態gif圖的。程序員

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)。技術文章均先首發於個人技術分享的微信公衆號。

相關文章
相關標籤/搜索