Glide和picasso使用及區(qū)別

Glide敦腔,一個(gè)被google所推薦的圖片加載庫(kù),常見(jiàn)的還有Picasso恨溜,F(xiàn)resco等符衔,每一個(gè)都非常穩(wěn)定找前,功能也都十分強(qiáng)大。但是它們的使用場(chǎng)景基本都是重合的判族,也就是說(shuō)我們基本只需要選擇其中一個(gè)來(lái)進(jìn)行學(xué)習(xí)和使用就足夠了躺盛,每一個(gè)框架都嘗試去掌握的話則有些浪費(fèi)時(shí)間。最常用的是Glide和Picasso,今天就針對(duì)于Glide和Picasso的區(qū)別形帮,以及Glide的簡(jiǎn)單使用來(lái)進(jìn)行具體介紹

Picasso的基本用法

Picasso.with(this)?.load(“http://nuuneoi.com/uploads/source/playstore/cover.jpg“)?.into(ivImgPicasso);

Picasso.with(this)?.load(“http://nuuneoi.com/uploads/source/playstore/cover.jpg“)?.resize(768, 432)?.into(ivImgPicasso);

Picasso.with(this)?.load(“http://nuuneoi.com/uploads/source/playstore/cover.jpg“)?.fit()?.centerCrop()?.into(ivImgPicasso);

這三種方法都可以加載圖片顯示到頁(yè)面上槽惫,

第一種:加載了全尺寸的圖片到內(nèi)存,然后讓GPU來(lái)實(shí)時(shí)重繪大小

第二種:你需要主動(dòng)計(jì)算ImageView的大小辩撑,或者說(shuō)你的ImageView大小是具體的值(而不是wrap_content)界斜,

第三種:按統(tǒng)一比例縮放圖片(保存圖片的尺寸比例)便于圖片的二維(寬度和高度)等于或者大于相應(yīng)的視圖的維度,這種方法和Glide加載圖片占用的內(nèi)存幾乎是相同的合冀,雖然內(nèi)存開(kāi)銷差距不大各薇,但是在這個(gè)問(wèn)題上Glide完勝Picasso。因?yàn)镚lide可以自動(dòng)計(jì)算出任意情況下的ImageView的大小君躺。

Glide的基本用法:

Glide.with(this)?.load("圖片的URL")?.into(ivImgGlide);

load方法中不僅可以傳入圖片地址峭判,還可以傳入圖片文件File,resource棕叫,圖片的byte數(shù)組等

Glide與Picasso的區(qū)別:

1林螃、內(nèi)存:

????????????加載同一張圖片Picasso,Picasso的內(nèi)存開(kāi)銷仍然遠(yuǎn)大于Glide俺泣。

2疗认、Image質(zhì)量的細(xì)節(jié):

????????????Glide默認(rèn)的是Bitmap格式是RGB-565

????????????Picasso默認(rèn)ARGB_8888格式

????????? ?Glide加載的圖片沒(méi)有Picasso那么平滑,但是很難察覺(jué)

3砌滞、磁盤緩存:? ?? ?

????????(1)Picasso緩存的是全尺寸的侮邀。而Glide緩存的跟ImageView尺寸相同

??????(2)將ImageView調(diào)整成不同大小不管大小如何設(shè)置。Picasso只緩存一個(gè)全尺寸的贝润。Glide則不同,它會(huì)為每種大小的ImageView緩存一次

????????????讓Glide既緩存全尺寸又緩存其他尺寸的方法:

Glide.with(this)?.load(“http://nuuneoi.com/uploads/source/playstore/cover.jpg“)?.diskCacheStrategy(DiskCacheStrategy.ALL)?.into(ivImgGlide);

Glide的這種方式優(yōu)點(diǎn)是加載顯示非陈料快打掘。而Picasso的方式則因?yàn)樾枰陲@示之前重新調(diào)整大小而導(dǎo)致一些延遲,Glide比Picasso快鹏秋,雖然需要更大的空間來(lái)緩存尊蚁。

4、Gif動(dòng)圖

????????????Glide可以加載Gif動(dòng)圖侣夷,Picasso不可以加載動(dòng)圖

????????????Glide動(dòng)畫(huà)會(huì)消耗太多的內(nèi)存横朋,因此使用時(shí)謹(jǐn)慎使用

總結(jié)一下他們之間的區(qū)別:

(1)Glide比Picasso加載速度快,但Glide比Picasso需要更大的空間來(lái)緩存百拓;

(2)Glide加載圖像及磁盤緩存的方式都優(yōu)于Picasso琴锭,且Glide更有利于減少OutOfMemoryError的發(fā)生晰甚;

(3)Glide可以加載Gif動(dòng)圖,Picasso不可以加載動(dòng)圖

(4)Picasso加載的圖片比Glide加載的圖片平滑(可忽略不計(jì))

Glide的具體使用方法:

1决帖、基本使用:

添加依賴厕九,現(xiàn)在Glide最新的依賴有4.x.x的

dependencies {

? ? compile 'com.github.bumptech.glide:glide:3.7.0'

}

基本使用是:

Glide.with(this).load(url).into(imageView);

2衣吠、with()

this可以是:

Context

Activity

Fragment

FragmentActivity

ApplicationContext

Context资溃、Activity莫换、Fragment家破、FragmentActivity酪耳,都是glide經(jīng)過(guò)方法都是向activity中添加一個(gè)fragment板甘,因?yàn)間lide無(wú)法直接獲取到activity同仆,添加一個(gè)與activity綁定的fragment倚舀,可以保證glide隨著activity的生命周期變化而停止暫時(shí)取消加載請(qǐng)求细睡。

3谷羞、load()

load是核心的請(qǐng)求方法, 在源碼中我們可以看到是在這里進(jìn)行網(wǎng)絡(luò)請(qǐng)求纹冤,

// 加載本地圖片

File file = new File(getExternalCacheDir() + "/image.jpg");

Glide.with(this).load(file).into(imageView);

// 加載應(yīng)用資源

int resource = R.drawable.image;

Glide.with(this).load(resource).into(imageView);

// 加載二進(jìn)制流

byte[] image = getImageBytes();

Glide.with(this).load(image).into(imageView);

// 加載Uri對(duì)象

Uri imageUri = getImageUri();

Glide.with(this).load(imageUri).into(imageView);

4洒宝、占位圖

我們?cè)趯?shí)際加載圖片的時(shí)候,由于各種原因比如網(wǎng)慢萌京,一時(shí)無(wú)法請(qǐng)求回?cái)?shù)據(jù)時(shí)雁歌,考慮到用戶體驗(yàn),一個(gè)占位圖也是非常重要的

Glide.with(this)

? ? .load(url)

? ? .placeholder(R.drawable.loading)

? ? .error(R.drawable.error)

? ? .into(imageView);

5知残、動(dòng)圖

asBitmap()去加載gif圖片靠瞎,那么只會(huì)顯示靜態(tài)圖片,并且只顯示動(dòng)圖的第一幀?

.asGif()去加載靜態(tài)圖片會(huì)顯示錯(cuò)誤圖片求妹,報(bào)錯(cuò)乏盐。

Glide.with(this)

? ? .load(url)

? ? .asBitmap()

? ? .placeholder(R.drawable.loading)

? ? .error(R.drawable.error)

? ? .diskCacheStrategy(DiskCacheStrategy.NONE)

? ? .into(imageView);

6、Glide 使用加載動(dòng)畫(huà)和禁止動(dòng)畫(huà)

glide默認(rèn)有淡入淡出動(dòng)畫(huà).crossFade()也可以不加制恍,也有重載.crossFade(int duration),主要設(shè)置動(dòng)畫(huà)進(jìn)行快慢父能,默認(rèn)是300毫秒。

Glide

? ? .with(context)

? ? .load(UsageExampleListViewAdapter.eatFoodyImages[0])

? ? .placeholder(R.mipmap.ic_launcher)

? ? .error(R.mipmap.future_studio_launcher)

? ? .crossFade()

? ? .into(imageViewFade);

7净神、設(shè)置圖片大泻瘟摺;

.override(300, 200);? //設(shè)置加載圖片尺寸大小

8鹃唯、圖片請(qǐng)求的優(yōu)先級(jí)

Glide可以通過(guò)Priority枚舉來(lái)設(shè)置加載圖片的優(yōu)先級(jí),具體使用場(chǎng)景就是爱榕,我們點(diǎn)擊一個(gè)頁(yè)面時(shí),先加載頁(yè)面中重要的圖片坡慌,再加載那些子圖像

Priority (優(yōu)先級(jí))枚舉給了四個(gè)不同的選項(xiàng)黔酥,下面是按照遞增priority(優(yōu)先級(jí))的

Priority.LOW 最低

Priority.NORMAL 正常

Priority.HIGH 最高

Priority.IMMEDIATE 立即

注意:優(yōu)先級(jí)并不是完全嚴(yán)格遵守的。Glide 將會(huì)用他們作為一個(gè)準(zhǔn)則,并盡可能的處理這些請(qǐng)求跪者,但是它不能保證所有的圖片都會(huì)按照所要求的順序加載棵帽。

.priority(Priority.HIGH);

9、縮略圖

縮略圖不同于前面提到的占位圖坑夯。占位圖應(yīng)當(dāng)是跟app綁定在一起的資源岖寞。縮略圖是一個(gè)動(dòng)態(tài)的占位圖柜蜈,可以從網(wǎng)絡(luò)加載仗谆。縮略圖也會(huì)被先加載淑履,直到實(shí)際圖片請(qǐng)求加載完畢隶垮。如果因?yàn)槟承┰颍s略圖獲得的時(shí)間晚于原始圖片秘噪,它并不會(huì)替代原始圖片狸吞,而是簡(jiǎn)單地被忽略掉。具體的應(yīng)用場(chǎng)景有很多指煎,可以提供幾張圖片便于大家理解


圖中的1蹋偏,2,3至壤,4威始,5,6就是縮略圖像街,7黎棠,就是原圖;這樣大家應(yīng)該會(huì)理解一點(diǎn)了镰绎,我覺(jué)得吧(這里只是說(shuō)一下自己的觀點(diǎn))縮略圖一是用戶體驗(yàn)較好脓斩,從用戶的角度,我們已經(jīng)看見(jiàn)了一個(gè)小版本的圖片畴栖。點(diǎn)擊才會(huì)加載同樣的圖片(高分辨率)随静,二是省流量,一張?jiān)瓐D或許需要幾M但是一張縮略圖或許只需要幾K吗讶,

那怎么加載縮略圖呢挪挤?Glide提供了2個(gè)不同的方法產(chǎn)生縮略圖。

第一種关翎,是通過(guò)在加載的時(shí)候指定一個(gè)小的分辨率,產(chǎn)生一個(gè)縮略圖鸠信。

.thumbnail( 0.1f )里面的參數(shù)是一個(gè)浮點(diǎn)乘法運(yùn)算

這個(gè)方法是啥意思呢纵寝?

例如,傳遞一個(gè)0.1f作為參數(shù),Glide會(huì)加載原始圖片大小的10%的圖片爽茴。

原始圖片---->1000x1000像素葬凳,

則縮略圖---->100x100像素。

由于圖片將會(huì)比ImageView小室奏,你需要確被鹧妫縮放類型是否正確。

注意:你所有的請(qǐng)求設(shè)置都會(huì)影響到你的縮略圖胧沫。例如昌简,如果你使用了一個(gè)變換讓你的圖片變?yōu)榛叶葓D,縮略圖也同樣將會(huì)是灰度圖绒怨。


10纯赎、緩存

?我們都知道Glide是自帶緩存的,所有的圖片請(qǐng)求都會(huì)被緩存在內(nèi)存和磁盤上南蹂。大多數(shù)情況下犬金,緩存是一個(gè)非常有用的東西,但在一些特殊的情況下并不是很明智六剥。比如晚顷,如果你有一張不段變化的圖片,但是都是用的同一個(gè)URL疗疟,這時(shí)候就需要我們避免緩存该默,Glide提供了一些方法避免內(nèi)存存儲(chǔ)和磁盤存儲(chǔ);

禁止內(nèi)存存儲(chǔ):

.skipMemoryCache( true )

去特意告訴Glide跳過(guò)內(nèi)存緩存秃嗜,這個(gè)只影響內(nèi)存緩存权均!Glide為了避免以后的網(wǎng)絡(luò)請(qǐng)求,仍然會(huì)緩存到磁盤锅锨。

禁止磁盤存儲(chǔ):

如果你想要禁止請(qǐng)求的磁盤緩存叽赊,使用枚舉型變量DiskCacheStrategy.NONE作為參數(shù)。

.diskCacheStrategy( DiskCacheStrategy.NONE )

.diskCacheStrategy()中枚舉參數(shù)以及意義:

DiskCacheStrategy.NONE 啥也不緩存

DiskCacheStrategy.SOURCE 只緩存全尺寸圖.

DiskCacheStrategy.RESULT 只緩存最終降低分辨后用到的圖片

DiskCacheStrategy.ALL 緩存所有類型的圖片 (默認(rèn))

結(jié)合兩個(gè)方法就可以同時(shí)禁止內(nèi)存存儲(chǔ)和磁盤緩存了

上面是我對(duì)Glide的簡(jiǎn)單理解必搞,希望可以幫助到大家

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末必指,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子恕洲,更是在濱河造成了極大的恐慌塔橡,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,546評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件霜第,死亡現(xiàn)場(chǎng)離奇詭異葛家,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)泌类,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門癞谒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事弹砚∷裕” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,911評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵桌吃,是天一觀的道長(zhǎng)朱沃。 經(jīng)常有香客問(wèn)我,道長(zhǎng)茅诱,這世上最難降的妖魔是什么逗物? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,737評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮让簿,結(jié)果婚禮上敬察,老公的妹妹穿的比我還像新娘。我一直安慰自己尔当,他們只是感情好莲祸,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,753評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著椭迎,像睡著了一般锐帜。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上畜号,一...
    開(kāi)封第一講書(shū)人閱讀 51,598評(píng)論 1 305
  • 那天缴阎,我揣著相機(jī)與錄音,去河邊找鬼简软。 笑死蛮拔,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的痹升。 我是一名探鬼主播建炫,決...
    沈念sama閱讀 40,338評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼疼蛾!你這毒婦竟也來(lái)了肛跌?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,249評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤察郁,失蹤者是張志新(化名)和其女友劉穎衍慎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體皮钠,經(jīng)...
    沈念sama閱讀 45,696評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡稳捆,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,888評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了麦轰。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片眷柔。...
    茶點(diǎn)故事閱讀 40,013評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡期虾,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出驯嘱,到底是詐尸還是另有隱情,我是刑警寧澤喳坠,帶...
    沈念sama閱讀 35,731評(píng)論 5 346
  • 正文 年R本政府宣布鞠评,位于F島的核電站,受9級(jí)特大地震影響壕鹉,放射性物質(zhì)發(fā)生泄漏剃幌。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,348評(píng)論 3 330
  • 文/蒙蒙 一晾浴、第九天 我趴在偏房一處隱蔽的房頂上張望负乡。 院中可真熱鬧,春花似錦脊凰、人聲如沸抖棘。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,929評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)切省。三九已至,卻和暖如春帕胆,著一層夾襖步出監(jiān)牢的瞬間朝捆,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,048評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工懒豹, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留芙盘,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,203評(píng)論 3 370
  • 正文 我出身青樓脸秽,卻偏偏與公主長(zhǎng)得像儒老,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子豹储,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,960評(píng)論 2 355

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

  • 一贷盲、簡(jiǎn)介 在泰國(guó)舉行的谷歌開(kāi)發(fā)者論壇上,谷歌為我們介紹了一個(gè)名叫Glide的圖片加載庫(kù)剥扣,作者是bumptech巩剖。這...
    天天大保建閱讀 7,474評(píng)論 2 28
  • 學(xué)習(xí)來(lái)源:郭霖大師博客地址 1、圖片加載框架挺多钠怯,如Volley佳魔、Glide、Picasso晦炊、Fresco鞠鲜、本次是...
    子謙寶寶閱讀 1,754評(píng)論 0 6
  • 7.1 壓縮圖片 一宁脊、基礎(chǔ)知識(shí) 1、圖片的格式 jpg:最常見(jiàn)的圖片格式贤姆。色彩還原度比較好榆苞,可以支持適當(dāng)壓縮后保持...
    AndroidMaster閱讀 2,516評(píng)論 0 13
  • Glide筆記 一、簡(jiǎn)介 在泰國(guó)舉行的谷歌開(kāi)發(fā)者論壇上霞捡,谷歌為我們介紹了一個(gè)名叫Glide的圖片加載庫(kù)坐漏,作者是bu...
    AndroidMaster閱讀 3,904評(píng)論 0 27
  • 這么久以來(lái)雖然經(jīng)常用到一些圖庫(kù),但是自己從來(lái)沒(méi)有真正整理過(guò)我們使用過(guò)的這些東西有什么不同點(diǎn),我們?yōu)槭裁匆x擇這個(gè)圖...
    黑石ZB閱讀 3,723評(píng)論 1 16