- 依賴 implementation'com.github.bumptech.glide:glide:4.8.0'
1. Glide將緩沖分為連兩個模塊
①. 內(nèi)存緩存:防止應(yīng)用重復(fù)將圖片讀取到內(nèi)存中
//禁用內(nèi)存緩存功能
Glide.with(this) .load(url) .skipMemoryCache(true) .into(imageView);
②. 硬盤緩沖:防止應(yīng)用重復(fù)從網(wǎng)絡(luò)或其他地方下載和讀取數(shù)據(jù)
//調(diào)用diskCacheStrategy()方法并傳入DiskCacheStrategy.NONE,就可以禁用掉Glide的硬盤緩存功能了
Glide.with(this) .load(url) .diskCacheStrategy(DiskCacheStrategy.NONE) .into(imageView);
2. diskCacheStrategy()方法 的五種參數(shù)
DiskCacheStrategy.NONE: 表示不緩存任何內(nèi)容混巧。
DiskCacheStrategy.DATA: 表示只緩存原始圖片疟暖。
DiskCacheStrategy.RESOURCE: 表示只緩存轉(zhuǎn)換過后的圖片嘱丢。
DiskCacheStrategy.ALL : 表示既緩存原始圖片佑菩,也緩存轉(zhuǎn)換過后的圖片猪狈。 DiskCacheStrategy.AUTOMATIC: 表示讓Glide根據(jù)圖片資源智能地選擇使用哪一種緩存策略(默認(rèn)選項).
3. Glide的使用:
//本地
//Glide.with(this).load(localUrl).into(iv_img);
//資源
//Glide.with(this).load(R.mipmap.ic_launcher).into(iv_img);
RequestOptions requestOptions =new RequestOptions();
//占位符
//(在圖片還沒有加載出來時 放一張圖片)
//requestOptions.placeholder(R.mipmap.ic_launcher);
//錯誤占位符(路徑錯誤時 所加載出來的圖片)
requestOptions.error(R.drawable.ic_launcher_background);
//指定圖片大小
//requestOptions.override(100, 100);
//圓形圖片
//requestOptions.circleCrop();
//圓角圖片
RoundedCorners corners =new RoundedCorners(100);
requestOptions.transform(corners);
//靜止任何轉(zhuǎn)換
//requestOptions.dontTransform();
//內(nèi)存緩沖
//requestOptions.skipMemoryCache(false);
//硬盤
//requestOptions.diskCacheStrategy(DiskCacheStrategy.AUTOMATIC);
Glide.with(this)
//.asGif()//加載動態(tài)圖,如果有圖片不是GIF,則直接加載占位圖
// .asBitmap()//將動圖轉(zhuǎn)換為靜圖(如果是Gif則只加載第一幀)
.load(localUrl)
.apply(requestOptions)
.into(iv_img);
}
4. 實現(xiàn)下載圖片并且展示下載圖片
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_bownload:
download();
break;
case R.id.btn_doenload_show:
//顯示下載好的圖片
Glide.with(MainActivity.this)
.load(file)
.into(iv_img);
break;
}
}
private void download() {
new Thread(new Runnable() {
@Override
public void run() {
FutureTarget fileFutureTarget = Glide
.with(MainActivity.this)
.load(netUrl)
//下載圖片
.downloadOnly(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL);
try {
//下載好圖片的路徑
file = fileFutureTarget.get();
Log.e("TAG","路徑" +file.getAbsolutePath());
}catch (ExecutionException e) {
e.printStackTrace();
}catch (InterruptedException e) {
e.printStackTrace();
}
}
}).start();
}