Glide框架的使用

簡(jiǎn)介

Glide是一款谷歌官方推薦使用的強(qiáng)大圖片加載框架。它具有使用非常簡(jiǎn)單碰酝、可配置度高离陶、加載的圖片格式豐富、加載的圖片路徑多種庐杨、高效的緩存策略和與Activity/Fragment生命周期綁定等特點(diǎn)宋下。

特點(diǎn)

(1)使用簡(jiǎn)單
(2)可配置度高,自適應(yīng)程度高
(3)支持常見圖片格式 jpg辑莫、png、gif罩引、webp
(4)支持多種數(shù)據(jù)源 網(wǎng)絡(luò)各吨、本地、資源袁铐、Assets 等
(5)高效緩存策略揭蜒,支持Memory和Disk圖片緩存 默認(rèn)Bitmap格式采用RGB_565內(nèi)存使用至少減少一半
(6)生命周期集成,根據(jù)Activity/Fragment生命周期自動(dòng)管理請(qǐng)求
(7)高效處理Bitmap 使用Bitmap Pool使Bitmap復(fù)用剔桨,主動(dòng)調(diào)用recycle回收需要回收的Bitmap屉更,減小系統(tǒng)回收壓力

下載地址

https://github.com/bumptech/glide

功能

1)簡(jiǎn)單使用

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

2)Glide.with()使用

(1)with(Context context)
使用Application上下文,Glide請(qǐng)求將不受Activity/Fragment生命周期控制洒缀。
(2)with(Activity activity)
使用Activity作為上下文瑰谜,Glide的請(qǐng)求會(huì)受到Activity生命周期控制。
(3)with(FragmentActivity activity)
Glide的請(qǐng)求會(huì)受到FragmentActivity生命周期控制树绩。
(4)with(android.app.Fragment fragment)
Glide的請(qǐng)求會(huì)受到Fragment 生命周期控制萨脑。
(5)with(android.support.v4.app.Fragment fragment)
Glide的請(qǐng)求會(huì)受到Fragment生命周期控制。

3)load()使用

Glide基本可以load任何可以拿到的媒體資源

//SD卡資源:
load("file://"+ Environment.getExternalStorageDirectory().getPath()+"/test.jpg")

//assets資源:
load("file:///android_asset/f003.gif")

//raw資源:
load("Android.resource://com.frank.glide/raw/raw_1")
//或
load("android.resource://com.frank.glide/raw/"+R.raw.raw_1)

//drawable資源:
load("android.resource://com.frank.glide/drawable/news")
//或
load("android.resource://com.frank.glide/drawable/"+R.drawable.news) 

//ContentProvider資源:
load("content://media/external/images/media/139469") 

//http資源:
load("http://img.my.csdn.NET/uploads/201508/05/1438760757_3588.jpg") 

//https資源:
load("https://wx4.sinaimg.cn/mw690/7944ffc4ly1fixi692jkqj22g53o7u10.jpg") 

注意:load不限于String類型
還可以是:load(Uri uri)饺饭,load(File file)渤早,load(Integer resourceId),load(URL url)瘫俊,load(byte[] model)鹊杖,load(T model),loadFromMediaStore(Uri uri)扛芽。

4)重要功能

(1)禁止內(nèi)存緩存:
.skipMemoryCache(true)
(2)清除內(nèi)存緩存:
必須在UI線程中調(diào)用Glide.get(context).clearMemory();
(3)禁止磁盤緩存:
.diskCacheStrategy(DiskCacheStrategy.NONE)
(5)獲取緩存大新畋汀:

new GetDiskCacheSizeTask(textView).execute(new File(getCacheDir(), DiskCache.Factory.DEFAULT_DISK_CACHE_DIR));

(6)指定資源的優(yōu)先加載順序:

//優(yōu)先加載
    Glide
        .with(context)
        .load(heroImageUrl)
        .priority(Priority.HIGH)
        .into(imageViewHero);

    //后加載
    Glide
        .with(context)
        .load(itemImageUrl)
        .priority(Priority.LOW)
        .into(imageViewItem);

(7)先顯示縮略圖,再顯示原圖:

//用原圖的1/10作為縮略圖

    Glide

        .with(this)

        .load("http://inthecheesefactory.com/uploads/source/nestedfragment/fragments.png")

        .thumbnail(0.1f)

        .into(iv_0);

    //用其它圖片作為縮略圖

    DrawableRequestBuilder<Integer> thumbnailRequest = Glide

        .with(this)

        .load(R.drawable.news);

    Glide.with(this)

        .load("http://inthecheesefactory.com/uploads/source/nestedfragment/fragments.png")

        .thumbnail(thumbnailRequest)

        .into(iv_0);

(8)對(duì)圖片進(jìn)行裁剪胸哥、模糊涯竟、濾鏡等處理:

    //圓形裁剪

    Glide.with(this)

        .load("http://inthecheesefactory.com/uploads/source/nestedfragment/fragments.png")

        .bitmapTransform(new CropCircleTransformation(this))

        .into(iv_0);

    //圓角處理

    Glide.with(this)

        .load("http://inthecheesefactory.com/uploads/source/nestedfragment/fragments.png")

        .bitmapTransform(new RoundedCornersTransformation(this,30,0, RoundedCornersTransformation.CornerType.ALL))

        .into(iv_0);

    //灰度處理

    Glide.with(this)

        .load("http://inthecheesefactory.com/uploads/source/nestedfragment/fragments.png")

        .bitmapTransform(new GrayscaleTransformation(this))

        .into(iv_0);

    //其它變換...

(9)對(duì)請(qǐng)求狀態(tài)進(jìn)行監(jiān)聽:
(10)對(duì)資源的下載進(jìn)度進(jìn)行監(jiān)聽:

基本使用

//加載網(wǎng)絡(luò)圖片
        tvGlide1.setText("加載網(wǎng)絡(luò)圖片");
        Glide.with(this)
                .load("https://wx4.sinaimg.cn/mw690/7944ffc4ly1fixi692jkqj22g53o7u10.jpg\n")
                .into(ivGlide1);

        //加載資源圖片
        tvGlide2.setText("加載資源圖片");
        Glide.with(this).load(R.drawable.ic_launcher_background).into(ivGlide2);

        //加載本地圖片
        tvGlide3.setText("加載本地圖片");
        String path = Environment.getExternalStorageDirectory() + "/bobo.jpg";
        File file = new File(path);
        Uri uri = Uri.fromFile(file);
        Glide.with(this).load(uri).into(ivGlide3);

        //加載網(wǎng)絡(luò)gif
        tvGlide4.setText("加載網(wǎng)絡(luò)gif");
        String gif = "http://b.hiphotos.baidu.com/zhidao/pic/item/faedab64034f78f066abccc57b310a55b3191c67.jpg";
        Glide.with(this).load(gif).placeholder(R.drawable.ic_launcher_background).into(ivGlide4);

        //加載資源gif
        tvGlide5.setText("加載資源gif");
        Glide.with(this).load(R.drawable.loading)
                .placeholder(R.drawable.ic_launcher_background)
                .into(ivGlide5);

        //加載本地gif
        tvGlide6.setText("加載本地gif");
        String gifPath = Environment.getExternalStorageDirectory() + "/girl.gif";
        File gifFile = new File(gifPath);
        Glide.with(this).load(gifFile).placeholder(R.drawable.ic_launcher_background).into(ivGlide6);

        //(7)加載本地小視頻和快照
        tvGlide7.setText("加載本地小視頻和快照");
        String videoPath =Environment.getExternalStorageDirectory()+"/7.mp4";
        File videoFile = new File(videoPath);
        Glide.with(this).load(Uri.fromFile(videoFile)).placeholder(R.mipmap.ic_launcher).into(ivGlide7);

        //(8)設(shè)置縮略圖比例,然后,先加載縮略圖,再加載原圖
        tvGlide8.setText("設(shè)置縮略圖比例,然后庐船,先加載縮略圖银酬,再加載原圖");
        String urlPath= Environment.getExternalStorageDirectory() + "/bobo.jpg";
        Glide.with(this).load(new File(urlPath)).thumbnail(0.1f)
                .centerCrop().placeholder(R.mipmap.ic_launcher)
                .into(ivGlide8);

        //(9)先建立一個(gè)縮略圖對(duì)象,然后筐钟,先加載縮略圖揩瞪,再加載原圖
        tvGlide9.setText("先建立一個(gè)縮略圖對(duì)象,然后篓冲,先加載縮略圖李破,再加載原圖");
        RequestBuilder<Drawable> requestManager =  Glide.with(this).load(new File(urlPath));
        Glide.with(this).load(Uri.fromFile(videoFile))
                .thumbnail(requestManager).centerCrop()
                .placeholder(R.mipmap.ic_launcher).into(ivGlide9);
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市壹将,隨后出現(xiàn)的幾起案子嗤攻,更是在濱河造成了極大的恐慌,老刑警劉巖诽俯,帶你破解...
    沈念sama閱讀 218,755評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件妇菱,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡暴区,警方通過查閱死者的電腦和手機(jī)闯团,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來仙粱,“玉大人房交,你說我怎么就攤上這事》ジ睿” “怎么了候味?”我有些...
    開封第一講書人閱讀 165,138評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)隔心。 經(jīng)常有香客問我负溪,道長(zhǎng),這世上最難降的妖魔是什么济炎? 我笑而不...
    開封第一講書人閱讀 58,791評(píng)論 1 295
  • 正文 為了忘掉前任川抡,我火速辦了婚禮,結(jié)果婚禮上须尚,老公的妹妹穿的比我還像新娘崖堤。我一直安慰自己,他們只是感情好耐床,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評(píng)論 6 392
  • 文/花漫 我一把揭開白布密幔。 她就那樣靜靜地躺著,像睡著了一般撩轰。 火紅的嫁衣襯著肌膚如雪胯甩。 梳的紋絲不亂的頭發(fā)上昧廷,一...
    開封第一講書人閱讀 51,631評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音偎箫,去河邊找鬼木柬。 笑死,一個(gè)胖子當(dāng)著我的面吹牛淹办,可吹牛的內(nèi)容都是我干的眉枕。 我是一名探鬼主播,決...
    沈念sama閱讀 40,362評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼怜森,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼速挑!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起副硅,我...
    開封第一講書人閱讀 39,264評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤姥宝,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后恐疲,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體伶授,經(jīng)...
    沈念sama閱讀 45,724評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年流纹,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片违诗。...
    茶點(diǎn)故事閱讀 40,040評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡漱凝,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出诸迟,到底是詐尸還是另有隱情茸炒,我是刑警寧澤,帶...
    沈念sama閱讀 35,742評(píng)論 5 346
  • 正文 年R本政府宣布阵苇,位于F島的核電站壁公,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏绅项。R本人自食惡果不足惜紊册,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望快耿。 院中可真熱鬧囊陡,春花似錦、人聲如沸掀亥。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽搪花。三九已至遏片,卻和暖如春嘹害,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背吮便。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工笔呀, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人线衫。 一個(gè)月前我還...
    沈念sama閱讀 48,247評(píng)論 3 371
  • 正文 我出身青樓凿可,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親授账。 傳聞我的和親對(duì)象是個(gè)殘疾皇子枯跑,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評(píng)論 2 355

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