2.圖片加載庫(kù)

`Picasso與Glide弟疆、Fresco等開(kāi)源項(xiàng)目的不同特點(diǎn)和使用場(chǎng)景戚长,"他們之間有什么區(qū)別?"怠苔,“各自的特點(diǎn)是什么同廉?”。把這些問(wèn)題回答好了柑司,至少可以把你和拿來(lái)主義的競(jìng)爭(zhēng)者區(qū)分開(kāi)迫肖。
Android 三大圖片緩存原理、特性對(duì)比
Android 開(kāi)源圖片庫(kù)的選型及對(duì)比

Paste_Image.png

Universal Image Loader:一個(gè)強(qiáng)大的圖片加載庫(kù)攒驰,包含各種各樣的配置蟆湖,最老牌,使用也最廣泛玻粪。
Picasso: Square出品隅津,必屬精品。和OkHttp搭配起來(lái)更配呦劲室!
Volley ImageLoader:Google官方出品伦仍,可惜不能加載本地圖片~
Fresco:Facebook出的,天生驕傲很洋!不是一般的強(qiáng)大充蓝。
Glide:Google推薦的圖片加載庫(kù),專(zhuān)注于流暢的滾動(dòng)。

1.Picasso

應(yīng)用場(chǎng)景:小型化圖片數(shù)量少谓苟,非gif圖片官脓,

  • 優(yōu)點(diǎn)
  • 輕量化體積小,使用簡(jiǎn)單
    (1) 自帶統(tǒng)計(jì)監(jiān)控功能支持圖片緩存使用的監(jiān)控娜谊,包括緩存命中率确买、已使用內(nèi)存大小、節(jié)省的流量等纱皆。
    (2) 支持優(yōu)先級(jí)處理每次任務(wù)調(diào)度前會(huì)選擇優(yōu)先級(jí)高的任務(wù)湾趾,比如 App 頁(yè)面中 Banner 的優(yōu)先級(jí)高于 Icon 時(shí)就很適用。
    (3) 支持延遲到圖片尺寸計(jì)算完成加載
    (4) 支持飛行模式派草、并發(fā)線程數(shù)根據(jù)網(wǎng)絡(luò)類(lèi)型而變手機(jī)切換到飛行模式或網(wǎng)絡(luò)類(lèi)型變換時(shí)會(huì)自動(dòng)調(diào)整線程池最大并發(fā)數(shù)搀缠,比如 wifi 最大并發(fā)為 4, 4g 為 3近迁,3g 為 2艺普。這里 Picasso 根據(jù)網(wǎng)絡(luò)類(lèi)型來(lái)決定最大并發(fā)數(shù),而不是 CPU 核數(shù)鉴竭。
    (5) “無(wú)”本地緩存無(wú)”本地緩存歧譬,不是說(shuō)沒(méi)有本地緩存,而是 Picasso 自己沒(méi)有實(shí)現(xiàn)搏存,交給了 Square 的另外一個(gè)網(wǎng)絡(luò)庫(kù) okhttp 去實(shí)現(xiàn)瑰步,這樣的好處是可以通過(guò)請(qǐng)求 Response Header 中的 Cache-Control 及 Expired 控制圖片的過(guò)期時(shí)間。
  • 缺點(diǎn)

不能加載gif

2.Glide (Picasso的二次開(kāi)發(fā))

Google推薦的圖片加載庫(kù)Glide介紹

  • 優(yōu)點(diǎn)
  • 支持 Gif璧眠、WebP缩焦、縮略圖。甚至是 Video
    而 Picasso 不能责静,但是 Glide 動(dòng)畫(huà)會(huì)消費(fèi)太多的內(nèi)存袁滥,因此謹(jǐn)慎使用。除了 gif 動(dòng)畫(huà)之外灾螃,Glide 還可以將任何的本地視頻解碼成一張靜態(tài)圖片题翻。還有一個(gè)特性是你可以配置圖片顯示的動(dòng)畫(huà),而 Picasso 只有一種動(dòng)畫(huà):fading in腰鬼,最后一個(gè)是可以使用 thumbnail()產(chǎn)生一個(gè)你所加載圖片的 thumbnail藐握。
  • 相對(duì)于Picasso,Glide 的 with 方法不光接受 Context,還接受 Activity 和 Fragment
    Context 會(huì)自動(dòng)的從他們獲取垃喊,同時(shí)將 Activity/Fragment 作為 with()參數(shù)的好處是:圖片加載會(huì)和 Activity/Fragment 的生命周期保持一致猾普,比如 Paused 狀態(tài)在暫停加載,在 Resumed 的時(shí)候又自動(dòng)重新加載本谜。
  • 根據(jù)尺寸緩存初家,加載顯示非常快,但是需要大的緩存空間溜在。
    Picasso 是加載了全尺寸的圖片到內(nèi)存陌知,然后讓 GPU 來(lái)實(shí)時(shí)重繪大小。而 Glide 加載的大小和 ImageView 的大小是一致的掖肋,當(dāng)然仆葡,Picasso 也是可以指定加載圖片大小的,但是問(wèn)題在于你需要主動(dòng)計(jì)算 ImageView 的大小志笼,或者說(shuō)你的 ImageView 大小是具體的值(而不是 wrap_content )在加載圖片這個(gè)問(wèn)題上 Glide 完勝 Picasso沿盅,因?yàn)?Glide 可以自動(dòng)計(jì)算出任意情況下的 ImageView 大小。(Glide更有利于減少OutOfMemoryError的發(fā)生)
    **
  • 缺點(diǎn)
  • Glide 加載的圖片質(zhì)量要差于Picasso纫溃,這是因?yàn)?Glide 默認(rèn)的 Bitmap 格式是 RGB-565 腰涧,比 ARGB-8888 格式的內(nèi)存開(kāi)銷(xiāo)要小一半.補(bǔ)充:Glide可以設(shè)置Bitmap 格式轉(zhuǎn)換到 ARGB-8888
  • Image質(zhì)量的細(xì)節(jié),將 ImageView 還原到真實(shí)大小時(shí)紊浩,Glide 加載的圖片沒(méi)有 Picasso 那么平滑窖铡。

3.Fresco

使用場(chǎng)景:圖片較多的應(yīng)用

  • 優(yōu)點(diǎn)
  • 最大亮點(diǎn)在于它的內(nèi)存管理。
    解壓后的圖片,即 Android 中的 Bitmap 费彼,占用大量的內(nèi)存,在 Android 5.0以下系統(tǒng)中口芍,這會(huì)顯著地引發(fā)界面卡頓箍铲。而使用 Fresco 將很好地解決這個(gè)問(wèn)題祭玉,F(xiàn)resco 會(huì)將圖片放到一個(gè)特別的內(nèi)存區(qū)域(Ashmem 區(qū))氧映,當(dāng)圖片不再顯示的時(shí)候,占用的內(nèi)存會(huì)自動(dòng)被釋放脱货,這會(huì)使得 APP 更流暢岛都,減少因圖片內(nèi)存占用而引發(fā)的 OOM。當(dāng) APP 包含的圖片較多時(shí)振峻,這個(gè)效果尤其明顯臼疫。
  • 支持流式,可以類(lèi)似網(wǎng)頁(yè)上模糊漸進(jìn)式顯示圖片
    Fresco 支持圖像的漸進(jìn)式呈現(xiàn)扣孟,漸進(jìn)式的圖片格式先呈現(xiàn)大致的圖片輪廓烫堤,然后隨著圖片下載的繼續(xù),逐漸呈現(xiàn)清晰的圖片,這在低網(wǎng)速情況下瀏覽圖片十分有幫助鸽斟,可以帶來(lái)更好地用戶體驗(yàn)拔创。另外,F(xiàn)resco 支持加載 gif 圖富蓄,支持 WebP 格式剩燥。
  • 缺點(diǎn)
  • 體積太大
    Fresco>Glide>Picasso,所以 Fresco 在圖片較多的應(yīng)用中更能凸顯其價(jià)值立倍,如果應(yīng)用沒(méi)有太多圖片需求灭红,不推薦使用 Fresco。

3.Universal Image Loader(2015年底停止維護(hù))

使用場(chǎng)景:圖片較多的應(yīng)用

  • 優(yōu)點(diǎn)
  • 支持下載進(jìn)度監(jiān)聽(tīng)
  • 可以在view滾動(dòng)中暫停圖片加載 (通過(guò)pauseOnscrollListener接口可以在view滾動(dòng)中暫停圖片加載帐萎。)
  • 默認(rèn)實(shí)現(xiàn)多種內(nèi)存緩沖
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末比伏,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子疆导,更是在濱河造成了極大的恐慌赁项,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,576評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件澈段,死亡現(xiàn)場(chǎng)離奇詭異悠菜,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)败富,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)悔醋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人兽叮,你說(shuō)我怎么就攤上這事芬骄。” “怎么了鹦聪?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,017評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵账阻,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我泽本,道長(zhǎng)淘太,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,626評(píng)論 1 296
  • 正文 為了忘掉前任规丽,我火速辦了婚禮蒲牧,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘赌莺。我一直安慰自己冰抢,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,625評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布艘狭。 她就那樣靜靜地躺著晒屎,像睡著了一般喘蟆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上鼓鲁,一...
    開(kāi)封第一講書(shū)人閱讀 52,255評(píng)論 1 308
  • 那天蕴轨,我揣著相機(jī)與錄音,去河邊找鬼骇吭。 笑死橙弱,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的燥狰。 我是一名探鬼主播棘脐,決...
    沈念sama閱讀 40,825評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼龙致!你這毒婦竟也來(lái)了蛀缝?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,729評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤目代,失蹤者是張志新(化名)和其女友劉穎屈梁,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體榛了,經(jīng)...
    沈念sama閱讀 46,271評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡在讶,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,363評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了霜大。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片构哺。...
    茶點(diǎn)故事閱讀 40,498評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖战坤,靈堂內(nèi)的尸體忽然破棺而出曙强,到底是詐尸還是另有隱情,我是刑警寧澤途茫,帶...
    沈念sama閱讀 36,183評(píng)論 5 350
  • 正文 年R本政府宣布碟嘴,位于F島的核電站,受9級(jí)特大地震影響慈省,放射性物質(zhì)發(fā)生泄漏臀防。R本人自食惡果不足惜眠菇,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,867評(píng)論 3 333
  • 文/蒙蒙 一边败、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧捎废,春花似錦笑窜、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,338評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)嫌蚤。三九已至,卻和暖如春断傲,著一層夾襖步出監(jiān)牢的瞬間脱吱,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,458評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工认罩, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留箱蝠,地道東北人蟆盹。 一個(gè)月前我還...
    沈念sama閱讀 48,906評(píng)論 3 376
  • 正文 我出身青樓孕荠,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親毡代。 傳聞我的和親對(duì)象是個(gè)殘疾皇子劫拗,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,507評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容