1.Glide
Glide的with()接受的不僅僅是Context還可以是Activity或是Fragment宇智,Context會自動的從他們獲取砾莱。同時將Activity/Fragment作為with()參數(shù)的好處是:圖片加載會和Activity/Fragment的生命周期保持一致瑞筐,比如Paused狀態(tài)在暫停加載,在Resumed的時候又自動重新加載腊瑟。所以我建議傳參的時候傳遞Activity 和 Fragment給Glide聚假,而不是Context。
圖片質(zhì)量:
Glide默認(rèn)的Bitmap格式是RGB_565闰非,Glide當(dāng)然也可以通過GlideModule設(shè)置格式膘格。
緩存上:
Glide緩存的是跟ImageView尺寸相同的。Glide的這種方式優(yōu)點(diǎn)是加載顯示非巢扑桑快瘪贱。
Glide可以加載GIF動態(tài)圖
體積上:
Glide (v3.5.2)的大小約為430KB。然而Glide的方法數(shù)約2678辆毡。
2.Fresco
緩存上:
Fresco 中設(shè)計有一個叫做Image Pipeline的模塊菜秦。它負(fù)責(zé)從網(wǎng)絡(luò),從本地文件系統(tǒng)舶掖,本地資源加載圖片球昨。為了最大限度節(jié)省空間和CPU時間,它含有3級緩存設(shè)計(2級內(nèi)存眨攘,1級磁盤)主慰。
Fresco中設(shè)計有一個叫做Drawees模塊嚣州,它會在圖片加載完成前顯示占位圖,加載成功后自動替換為目標(biāo)圖片共螺。當(dāng)圖片不再顯示在屏幕上時该肴,它會及時地釋放內(nèi)存和空間占用。
內(nèi)存管理:
解壓后的圖片璃谨,即Android中的Bitmap沙庐,占用大量的內(nèi)存。大的內(nèi)存占用勢必引發(fā)更加頻繁的GC佳吞。在5.0以下拱雏,GC將會顯著地引發(fā)界面卡頓。
在5.0以下系統(tǒng)底扳,F(xiàn)resco將圖片放到一個特別的內(nèi)存區(qū)域铸抑。當(dāng)然,在圖片不顯示的時候衷模,占用的內(nèi)存會自動被釋放鹊汛。這會使得APP更加流暢,減少因圖片內(nèi)存占用而引發(fā)的OOM阱冶。
Fresco 在低端機(jī)器上表現(xiàn)一樣出色刁憋,你再也不用因圖片內(nèi)存占用而思前想后。
·圖片繪制
Fresco 的 Drawees 設(shè)計木蹬,帶來一些有用的特性:
1.自定義居中焦點(diǎn)
2.圓角圖至耻,當(dāng)然圓圈也行
3.下載失敗之后,點(diǎn)擊重現(xiàn)下載
4.自定義占位圖镊叁,自定義overlay, 或者進(jìn)度條
5.指定用戶按壓時的overlay
圖片加載
Fresco的Image Pipeline允許你用很多種方式來自定義圖片加載過程尘颓,比如:
1.為同一個圖片指定不同的遠(yuǎn)程路徑,或者使用已經(jīng)存在本地緩存中的圖片
2.先顯示一個低清晰度的圖片晦譬,等高清圖下載完之后再顯示高清圖
3.加載完成回調(diào)通知
4.對于本地圖疤苹,如有EXIF縮略圖,在大圖加載完成之前敛腌,可先顯示縮略圖
5.縮放或者旋轉(zhuǎn)圖片
6.對已下載的圖片再次處理
7.支持WebP解碼卧土,即使在早先對WebP支持不完善的Android系統(tǒng)上也能正常使用!
動圖加載
加載Gif圖和WebP動圖在任何一個Android開發(fā)者眼里看來都是一件非常頭疼的事情迎瞧。每一幀都是一張很大的Bitmap夸溶,每一個動畫都有很多幀。Fresco讓你沒有這些煩惱凶硅,它處理好每一幀并管理好你的內(nèi)存缝裁。
圖片的漸進(jìn)式呈現(xiàn)
漸進(jìn)式的JPEG圖片格式已經(jīng)流行數(shù)年了,漸進(jìn)式圖片格式先呈現(xiàn)大致的圖片輪廓,然后隨著圖片下載的繼續(xù)捷绑,呈現(xiàn)逐漸清晰的圖片韩脑,這對于移動設(shè)備,尤其是慢網(wǎng)絡(luò)有極大的利好粹污,可帶來更好的用戶體驗段多。
3.Picsso
圖片質(zhì)量
ARGB_8888格式,比Glide內(nèi)存要高一倍壮吩。
緩存上
Picasso緩存的是全尺寸的进苍,而Picasso的方式則因為需要在顯示之前重新調(diào)整大小而導(dǎo)致一些延遲。
體積上
Picasso (v2.5.1)大小約為118KB鸭叙,Picasso的方法數(shù)大約480觉啊。
最后,進(jìn)行總結(jié)一下
Picasso 所能實現(xiàn)的功能 Glide 都能做到沈贝,只是所需設(shè)置不同杠人。兩者的區(qū)別是 Picasso 比 Glide 體積小很多且圖像質(zhì)量比 Glide 高,但Glide 的速度比 Picasso 更快宋下,Glide 的長處是處理大型的圖片流嗡善,如 gif、video学歧,如果要制作視頻類應(yīng)用罩引,Glide 當(dāng)為首選。
Fresco 可以說是綜合了之前圖片加載庫的優(yōu)點(diǎn)枝笨,其在5.0以下的內(nèi)存優(yōu)化非常好蜒程,但它的不足是體積太大,按體積進(jìn)行比較:Fresco>Glide>Picasso伺帘,所以 Fresco 在圖片較多的應(yīng)用中更能凸顯其價值,如果應(yīng)用沒有太多圖片需求忌锯,還是不推薦使用 Fresco伪嫁。