glide使用

在實際的開發(fā)中我們會經(jīng)常遇見的問題就是圖片加載那先,需要自己寫工具類去加載农猬,還要根據(jù)實際的情況去做緩存、圓形圖售淡。對于我這樣的新手且無法完美解決的時候就想有個第三方框架來幫助我們解決這個事情斤葱。在12年的時候用的ImageLoader,后來用的就是Glide,這里講下glide的基本用法先揖闸。這里是基于Glide4.9.0揍堕,以后的源碼解析也基于這個版本做吧。
1.先說下怎么引用

  implementation 'com.github.bumptech.glide:glide:4.9.0'
  annotationProcessor 'com.github.bumptech.glide:compiler:4.9.0'

首先在我們的App下的buil.gradle文件中的dependencies{}加入Glide的引用汤纸。
2.如何使用

 Glide.with(MainActivity.this)
      .load(imageUrlBaidu)
      .into(mImageView2);

這里說明下基于4.9.0的

2.1 with(),with是我們傳入上下文來支持后面的操作等鹤啡。這里面的參數(shù)有多個(),這個方法在最底層需要傳入的是Context上下文蹲嚣,而我們可以傳入的有View递瑰、Context、Activity隙畜、Fragment抖部、FragmentActivity,其中Fragment支持android.app.Fragment和android.support.v4.app.Fragment,但是android.app.Fragment已經(jīng)開始不推薦使用了议惰,我們最好可以在使用中傳入Context上下文慎颗。


屏幕快照 2019-06-03 上午11.03.10.png

2.2 load(),load是我們告訴程序我們的數(shù)據(jù)源在哪里。load也支持多參數(shù)言询,這里我們可以傳入的有Uri俯萎、File、byte[]运杭、Object夫啊、Bitmap、String辆憔、Drawable撇眯、Integer报嵌、URl,其中Url不推薦使用熊榛,我先說下為什么URL不推薦使用了吧锚国,在實際開發(fā)中我們得到的數(shù)據(jù)往往是String類型,如果我們再轉(zhuǎn)換為URL玄坦,我們就需要處理異常血筑,因為我們無法保證在轉(zhuǎn)換為URL的時候不會出現(xiàn)異常,畢竟客戶端處理的數(shù)據(jù)是來自服務(wù)端煎楣,在發(fā)版后是不可控的豺总,我們可以直接使用String傳入就可以了。這里的laod其實就是告知我們的數(shù)據(jù)源是從哪里來的转质,然后由不同的方法進行處理园欣。


屏幕快照 2019-06-03 上午11.11.32.png

2.3 into(),into是我們需要告知程序我們的圖片最終在哪里顯示休蟹。into同樣支持多參數(shù)沸枯,大概可分為2種ImageView和Y(Y extends Target<TranscodeType>),但是實際開發(fā)中我們傳入的大多都是ImageView赂弓。


屏幕快照 2019-06-03 上午11.25.50.png

到了這里我們已經(jīng)可以對Glide的基本使用绑榴,有了簡單的認知了,我們可以將各種數(shù)據(jù)源的圖片顯示到了我們的界面上了盈魁,其實還是很簡單的翔怎。假如我們需要進行緩存呢?Glide能不能幫我們解決這件事杨耙,答案是可以的赤套,Glide默認進行了三級緩存操作,而且給了我們緩存的策略進行緩存內(nèi)容的設(shè)置珊膜。

Glide.with(MainActivity.this)
     .load(imageUrlBaidu)
     .diskCacheStrategy(DiskCacheStrategy.ALL)
     .into(mImageView2);

我們發(fā)現(xiàn)這里只是加了行代碼調(diào)用了diskCacheStrategy()容握,然后告知程序我們需要做什么,這里在用的時候我們需要知道以下內(nèi)容
DiskCacheStrategy是緩存策略车柠,有以下幾個參數(shù)剔氏,并詳細說明該策略的保存信息。

 1)  ALL 網(wǎng)絡(luò)資源執(zhí)行DATA竹祷、RESOURCE谈跛,本地資源執(zhí)行RESOURCE
 2) NONE  不緩存任何內(nèi)容
 3) DATA  緩存原始圖片
 4) RESOURCE  緩存解碼后的圖片
 5) AUTOMATIC  根據(jù)圖片資源智能地選擇使用哪一種緩存策略(默認選項)

這里緩存策略我們會用了,在實際開發(fā)中我們很少用到這些塑陵。

下面我們繼續(xù)說個常用的感憾,站位圖和錯誤圖,在Glide上使用占位圖和錯誤圖很簡單就可以做到

Glide.with(MainActivity.this)
     .load(imageUrlBaidu)
     .diskCacheStrategy(DiskCacheStrategy.ALL)
     .error(R.mipmap.ic_launcher1)
     .placeholder(R.mipmap.ic_launcher1
     .into(mImageView2);

通過placeholder設(shè)置本地的占位圖和error設(shè)置錯誤圖就可以實現(xiàn)我們的需求了猿妈,這兩個方法均可以設(shè)置Drawable吹菱、本地圖片資源和RequestBuilder<TranscodeType>巍虫,前兩個比較清楚彭则,后面一個我們后面再去分析鳍刷。

到這里基本上就能滿足我們?nèi)粘P枨罅耍旅嬖倏聪翯lide中有什么方法俯抖,可能會在開發(fā)中使用到

  1. listener 這里我們可以對加載圖片進行處理输瓜,加載成功和加載失敗兩個方法
  2. addListener 和listener不同的是,listener是清空了監(jiān)聽芬萍,把當(dāng)前監(jiān)聽加入進去尤揣,addListener是不清空監(jiān)聽,既不影響其他地方調(diào)用的監(jiān)聽柬祠,僅僅是把當(dāng)前的監(jiān)聽加入進去北戏,建議使用addListener,其他和listener相同
  3. .centerInside() .fitCenter() .centerCrop() 這三種圖片處理方式漫蛔,centerInside等比例縮小顯示嗜愈,在橫向或豎向上相等,不會進行放大莽龟。fitCenter等比例放大或縮小蠕嫁。centerCrop等比例放大。
  4. override(int w,int h)這個方法會將圖片以制定的高寬顯示在ImageView上
    5.apply(RequestOptions.bitmapTransform(new RoundedCorners(dp2px(60)))) 這個方法可以設(shè)置為圓形圖了毯盈。
  5. .optionalFitCenter() 同樣可以圓形
 Glide.with(MainActivity.this)
      .load(headPic)
      .apply(RequestOptions.bitmapTransform(new RoundedCorners(dp2px(60))))
      .into(mImageView1);


  private int dp2px(int dp) {
        return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, getResources().getDisplayMetrics());
    }

差不多就這些了剃毒,其實還是蠻簡單的。下次寫glide就要看看了搂赋,這次還是比較匆忙的赘阀,下次寫就寫寫transform和glide的緩存。

transform這個 暫時不想寫了脑奠,大家可以去看下glide-transformations這個大概看了下 已經(jīng)能滿足日常了基公。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市捺信,隨后出現(xiàn)的幾起案子酌媒,更是在濱河造成了極大的恐慌,老刑警劉巖迄靠,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件秒咨,死亡現(xiàn)場離奇詭異,居然都是意外死亡掌挚,警方通過查閱死者的電腦和手機雨席,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來吠式,“玉大人陡厘,你說我怎么就攤上這事抽米。” “怎么了糙置?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵云茸,是天一觀的道長。 經(jīng)常有香客問我谤饭,道長标捺,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任揉抵,我火速辦了婚禮亡容,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘冤今。我一直安慰自己闺兢,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布戏罢。 她就那樣靜靜地躺著屋谭,像睡著了一般。 火紅的嫁衣襯著肌膚如雪帖汞。 梳的紋絲不亂的頭發(fā)上戴而,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天,我揣著相機與錄音翩蘸,去河邊找鬼所意。 笑死,一個胖子當(dāng)著我的面吹牛催首,可吹牛的內(nèi)容都是我干的扶踊。 我是一名探鬼主播,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼郎任,長吁一口氣:“原來是場噩夢啊……” “哼秧耗!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起舶治,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤分井,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后霉猛,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體尺锚,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年惜浅,在試婚紗的時候發(fā)現(xiàn)自己被綠了瘫辩。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖伐厌,靈堂內(nèi)的尸體忽然破棺而出承绸,到底是詐尸還是另有隱情,我是刑警寧澤挣轨,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布军熏,位于F島的核電站,受9級特大地震影響刃唐,放射性物質(zhì)發(fā)生泄漏羞迷。R本人自食惡果不足惜界轩,卻給世界環(huán)境...
    茶點故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一画饥、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧浊猾,春花似錦抖甘、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至偷办,卻和暖如春艰额,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背椒涯。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工柄沮, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人废岂。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓祖搓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親湖苞。 傳聞我的和親對象是個殘疾皇子拯欧,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,843評論 2 354

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