轉(zhuǎn)載自:
http://mp.weixin.qq.com/s?__biz=MzA4NTQwNDcyMA==&mid=2650661949&idx=1&sn=09aececd879bd8b4635e6a63a8249808#rd
今天來給大家分析下凉当,圖片加載到底該怎么選擇喻括!
1
UniversalImageLoader
https://github.com/nostra13/Android-Universal-Image-Loader
UIL可以算是老牌最火的圖片加載庫了悉患,使用過這個開源庫的項目可以說是多的令人發(fā)指逐纬,即使到現(xiàn)在 GitHub 上他的 Star 數(shù)仍然是眾多圖片加載庫最多的哼转。
可惜的是該作者在項目中說明德崭,從去年的9月份欲险,他就已經(jīng)停止了對該項目的維護。這就意味著以后任何的 bug 都不會修復(fù)甩挫,任何的新特性都不會再繼續(xù)開發(fā),所以毫無疑問 UIL 不推薦在項目中使用了椿每。
2
Picasso
https://github.com/square/picasso
Picasso 是 Square 公司的大作伊者,名字起的也這么文藝,叫「畢加索」间护,意為加載圖片就像畫畫一樣亦渗,是一門藝術(shù)。這個庫是我之前一直很喜歡的汁尺,因為他不僅具備圖片加載應(yīng)有盡有的強大功能法精,他的調(diào)用也是如此簡潔文藝:
Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(imageView);
以上代碼就是給一個 ImageView 加載遠程圖片的一個示例,是不是很簡潔?
當然不止如此亿虽,他還提供更多的用法菱涤,足以滿足你實際項目中的各種需求,具體這些用法本文就不提了洛勉,可以去官網(wǎng)自行研究粘秆。
3
Glide
https://github.com/bumptech/glide
Glide 是 Google 一位員工的大作,他完全是基于 Picasso 的收毫,沿襲了 Picasso 的簡潔風(fēng)格攻走,但是在此做了大量優(yōu)化與改進。
Glide 默認的 Bitmap 格式是 RGB_565 格式此再,而 Picasso 默認的是 ARGB_8888 格式昔搂,這個內(nèi)存開銷要小一半。
在磁盤緩存方面输拇,Picasso 只會緩存原始尺寸的圖片摘符,而 Glide 緩存的是多種規(guī)格,也就意味著 Glide 會根據(jù)你 ImageView 的大小來緩存相應(yīng)大小的圖片尺寸策吠,比如你 ImageView 大小是200*200逛裤,原圖是 400*400 ,而使用 Glide 就會緩存 200*200 規(guī)格的圖猴抹,而 Picasso 只會緩存 400*400 規(guī)格的带族。這個改進就會導(dǎo)致 Glide 比 Picasso 加載的速度要快,畢竟少了每次裁剪重新渲染的過程蟀给。
最重要的一個特性是 Glide 支持加載 Gif 動態(tài)圖蝙砌,而 Picasso 不支持該特性。
除此之外跋理,還有很多其他配置選項的增加择克。
總體來說,Glide 是在 Picasso 基礎(chǔ)之上進行的二次開發(fā)前普,各個方面做了不少改進祠饺,不過這也導(dǎo)致他的包比 Picasso 大不少,不過也就不到 500k汁政,Picasso 是100多k,方法數(shù)也比 Picasso 多不少缀旁,不過畢竟級別還是蠻小的记劈,影響不是很大。
4
Fresco
https://github.com/facebook/fresco
Fresco 是 Facebook 出品并巍,他是新一代的圖片加載庫目木,我們知道 Android 應(yīng)用程序可用的內(nèi)存有限,經(jīng)常會因為圖片加載導(dǎo)致 OOM,雖然我們有各種手段去優(yōu)化刽射,盡量減少出現(xiàn) OOM 的可能性军拟,但是永遠沒法避免,尤其某些低端手機 OOM 更是嚴重誓禁。而 Facebook 就另辟蹊徑懈息,既然沒法在 Java 層處理,我們就在更底層的 Native 堆做手腳摹恰。于是 Fresco 將圖片放到一個特別的內(nèi)存區(qū)域叫 Ashmem 區(qū)辫继,就是屬于 Native 堆,圖片將不再占用 App 的內(nèi)存俗慈,Java 層對此無能為力姑宽,這里是屬于 C++ 的地盤,所以能大大的減少 OOM闺阱。
所以此庫很強大炮车,不過用起來也比較復(fù)雜,包也比較大酣溃,貌似有2瘦穆、3M,底層涉及到的 C++ 領(lǐng)域救拉,想讀源碼也比較困難难审。
5
總結(jié)
綜合來看,毫無疑問 Glide 與 Picasso 之間優(yōu)先推薦選擇 Glide亿絮,尤其是如果你的項目想要支持 Gif 動態(tài)圖告喊,那更該選擇 Glide 。
但是如果你的項目使用了 Square 公司的全家桶派昧,如 Retrofit 或者 OkHttp 黔姜,那么搭配 Picasso 一起使用也不是不可,兼容性可能會更好些蒂萎,占用體積也會少些秆吵。
對于一般的 App 使用 Fresco 未免有些大材小用了,大部分情況 Glide 都能滿足你的需求了五慈,但是如果你的 App 中大量使用圖片纳寂,比如是類似 Instagram 一類的圖片社交 App ,那么推薦使用 Fresco 泻拦,雖然稍復(fù)雜毙芜,但是還是推薦使用 Fresco ,對提升你 App 的性能與體驗有不少幫助争拐,值得花時間去研究并應(yīng)用到自己的 App 上來腋粥。