Glide 不能說的祕密

joe發表於2016-08-25

Glide簡介

An image loading and caching library for Android focused on smooth scrolling
一個專注於流暢滑動的圖片載入和快取庫

優勢

其實現在,圖片載入和快取的庫已經超級多了,Glide是目前谷歌官方推薦的載入庫,它有一個比較牛的特點就是支援GIF格式的圖片播放,目前的人氣也超級高!!另外還可以設定漸變的載入效果,控制相關快取策略等!以下就圍繞這些做一些具體的介紹!

引入庫

如果你的網路請求底層使用了Okhttp的話,那麼可以指定這個讓Glide網路層使用Okhttp

配置這個話,還需要在AndroidManifest裡面加入相關的配置:

基本的載入

在這個的基礎之上,設定預設顯示的圖片,設定載入錯誤的圖片,設定漸變效果.crossFade()來指定一個漸變的效果:

一般使用到這這裡就差不多了吧,不過要是覺得Glide就這樣了那可真的是太對不住Glide了!


進階-快取策略:

Glide預設會使用磁碟快取和記憶體快取的,你可以根據喜好和相關的使用場景定製相關的策略。

skipMemoryCache()跳過記憶體快取,這個預設就是false。如果不需要就設定為true來確保不會快取到記憶體中。

diskCacheStrategy() 磁碟快取策略,Glide支援很多種圖片快取策略。

DiskCacheStrategy.RESOURCE 只快取原始檔案

DiskCacheStrategy.ALL 快取所有size的圖片和原始檔

DiskCacheStrategy.RESULT 快取最後的結果檔案

DiskCacheStrategy.NONE 撒都不快取

在V3的版本預設是DiskCacheStrategy.RESULT的策略。

進階-轉換

另外Glide提供了相關的方法,你可以自定義相關的 Transformation,來完成相關的轉換!
這裡一共有兩個方法,一個是transform(),一個是getId(),如果說我們需要完成一些自己的需求,比如說,你需要載入出圓形的圖片,這裡簡單有效的方法就是直接設定一個CirCleTransform就好了:

stackoverflow

如果需要圓角矩形的話:

Glide還為我們提供了CenterCropFitCenter等轉換器,這些我們都可以直接使用!
這裡的getId()返回的必須是唯一的字串

說白了,我們這裡可以做很多的操作的,因為我們已經拿到相關的物件,可以隨意的進行各種旋轉、平移、放大、高斯模糊等。
Glide 轉換集合 已經給我們儘可能提過了足夠的轉換!

所以,還去引入什麼CircleImageView什麼的,真的就可以考慮考慮了,簡直弱爆了!一個Transform直接搞定。

進階-相關回撥

onResourceReady()當資源載入成功之後,會走這個回撥。

onException() 當載入異常時,會走這個回撥。

進階-各種Target

如果需要給自定義View載入對應的圖片,因為Glide根本不知道圖片需要載入到那個具體的View上面去展示,那這個就需要使用Glide為我們提供的相關介面,自己去實現就好了。

比如我們這裡有一個自定義的FrameLayout,名字就叫MyFrameLayout,裡面有一個TextView和一個ImageView,
對外提供一個方法:

然後自定義一個ViewTarget:

進階-定製各種策略

記得要在AndroidManifiest裡面配置相關的引數:

總結

青出於藍勝於藍,Glide就是在Picasso的基礎上改進出來的,有著相似的呼叫方法!作為新秀,增加的Gif的支援可以說是它的新的優勢!豐富的快取策略也更能滿足開發需求。
要看Glide運用專案的話,推薦Plaid,保證你有收穫!

打賞支援我寫出更多好文章,謝謝!

打賞作者

打賞支援我寫出更多好文章,謝謝!

任選一種支付方式

Glide 不能說的祕密 Glide 不能說的祕密

相關文章