Glide使用詳解

2021-08-10 21:20:26 字數 4508 閱讀 3984

以androidstudio為例,在build.gradle中新增依賴:

dependencies
androidmanifest.xml中宣告一下網路許可權:

android:name="android.permission.internet"/>
1載入
string url="";

glide.with(this).load(url).into(imageview);

先with(),再load(),最後into(),這是最簡單的三部曲

load使用:

1.載入本地

2.載入應用資源

int resource = r.drawable.image;

glide.with(this).load(resource).into(imageview);

3.載入二進位製流

byte image = getimagebytes();

glide.with(this).load(image).into(imageview);

4.載入uri物件

uri imageuri = getimageuri();

glide.with(this).load(imageuri).into(imageview);

2載入gif圖

string 

gifurl=""

;glide.with(this).load(gifurl).asgif().into(imageview);

3設定佔位圖和載入錯誤圖
glide.with(context).load(url)

.placeholder(r.mipmap

.ic_launcher)

.error(r.mipmap

.ic_launcher)

.into(imageview)

4快取
glide.with(context).load(url)

.skipmemorycache(false)

.diskcachestrategy(diskcachestrategy.none)

.into(imageview)

glide是預設開啟記憶體快取和磁碟快取的,上述**.skipmemorycache(false)和.diskcachestrategy(diskcachestrategy.none) 表示關閉記憶體快取和磁碟快取,在特定的情況下需要關閉,比如多次獲取驗證碼,如果後台返回的url是一致的,不關閉快取的話,每次顯示的都和第一張一樣。

磁碟快取的型別

diskcachestrategy.none 不快取

diskcachestrategy.all 快取原始圖和處理之後的

diskcachestrategy.source 快取原始圖

diskcachestrategy.result 快取處理之後的

清除快取

glide.get(context).clearmemory(); // 須在ui執行緒中呼叫

glide.get(context).cleardiskcache(); //須在子執行緒中呼叫

5其他方法

1.指定資源的優先載入順序

//優先載入

glide

.with(context)

.load(url)

.priority(priority.high)

.into(imageview);

//後載入

glide

.with(context)

.load(url)

.priority(priority.low)

.into(imageview);

2.設定載入尺寸

glide.with(context).load(imageurl).override(100, 100).into(imageview);
3.直接獲取

******target******target=new ******target() 

};public

void

loadimage(view view)

4.glide使用圓角或者圓形

4.1 圓形

public

class

glidecircletransform

extends

bitmaptransformation

@override

return circlecrop(pool, totransform);

}private

if (source == null) return

null;

int size = math.min(source.getwidth(), source.getheight());

int x = (source.getwidth() - size) / 2;

int y = (source.getheight() - size) / 2;

// todo this could be acquired from the pool too

bitmap squared = bitmap.createbitmap(source, x, y, size, size);

bitmap result = pool.get(size, size, bitmap.config.argb_8888);

if (result == null)

canvas canvas = new canvas(result);

paint paint = new paint();

paint.setshader(new bitmapshader(squared, bitmapshader.tilemode.clamp, bitmapshader.tilemode.clamp));

paint.setantialias(true);

float r = size / 2f;

canvas.drawcircle(r, r, r, paint);

return result;

}@override

public string getid()

}

4.2 使用圓角

public

class

glideroundtransform

extends

bitmaptransformation

public

glideroundtransform(context context, int dp)

@override

return roundcrop(pool, totransform);

}private

if (source == null) return

null;

bitmap result = pool.get(source.getwidth(), source.getheight(), bitmap.config.argb_8888);

if (result == null)

canvas canvas = new canvas(result);

paint paint = new paint();

paint.setshader(new bitmapshader(source, bitmapshader.tilemode.clamp, bitmapshader.tilemode.clamp));

paint.setantialias(true);

rectf rectf = new rectf(0f, 0f, source.getwidth(), source.getheight());

canvas.drawroundrect(rectf, radius, radius, paint);

return result;

}@override

public string getid()

}

4.3呼叫方式

glide.with(context).load(url)

.transform(newglidecircletransform(context))

.into(imageview);

glide.with(context).load(url)

.transform(new glideroundtransform(this,3))

.into(imageview); //圓角預設是4

上述包括了glide基本用法。

Glide使用詳解

compile com.github.bumptech.glide glide 4.8.0 annotationprocessor com.github.bumptech.glide compiler 4.8.0 它可以監聽使用者的連線狀態並在使用者重新連線到網路時重啟之前失敗的請求 用於硬碟快取和...

Glide使用詳解(二)

int getmaxsize void setsizemultiplier float sizemultiplier boolean put bitmap bitmap bitmap get int width,int height,bitmap.config config 由於該方法會擦除bitm...

Glide初步使用

1.新增引用 build.gradle 中新增配置 compile com.github.bumptech.glide glide 3.7.0 2.設定繫結生命週期 我們可以更加高效的使用glide提供的方式進行繫結,這樣可以更好的讓載入的請求的生命週期動態管理起來 glide.with conte...