天天看點

Android圖檔緩存架構 - Glide的RequestOptions (四)

目錄

1. Glide API

2. Glide導入包

3. Glide 7種加載圖檔方式

4. 取消加載

5 Glide加載GIF

6. Glide的RequestOptions

6.1 RequestOptions的API:

6.2 設定占位圖

6.3 設定錯誤圖檔

6.4 淡入淡出動畫

6.5 圖檔大小減小剪裁

6.6 圓形圖檔

6.7 縮略圖

6.8 緩存設定

6.9 優先級設定

6.10 清空緩存

7. Glide自定義圓角

8. RequestBuilder

9. Glide設定Listener

10 Glide初始化配置

6. Glide的RequestOptions

6.1 RequestOptions的API:

官方API:https://muyangmin.github.io/glide-docs-cn/javadocs/400/com/bumptech/glide/request/RequestOptions.html

參考設定:https://muyangmin.github.io/glide-docs-cn/doc/options.html

6.2 設定占位圖

網絡慢時圖檔加載不出來,需要設定預設圖檔;

//延時1秒
Thread.sleep(1000);
String imageUrl = "http://img.ivsky.com/img/tupian/pre/201806/20/dengta-008.jpg";
ImageView  imageView = (ImageView) findViewById(R.id.img_show);
RequestOptions options = new RequestOptions().placeholder(R.mipmap.img1);

Glide.with(getApplicationContext()).load(imageUrl).apply(options).into(imageView);
           

6.3 設定錯誤圖檔

網絡連接配接錯誤或者加載的路徑錯誤,需要設定錯誤時顯示的圖檔;

String errorUrl = "https://timgsa.baidu.com/24243.jpg";
ImageView  imageView = (ImageView) findViewById(R.id.img_show);
RequestOptions options = new RequestOptions().placeholder(R.mipmap.img1).error(R.mipmap.img_error);

Glide.with(getApplicationContext()).load(errorUrl).apply(options).into(imageView);
           

6.4 淡入淡出動畫

必須導入:

import static com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions.withCrossFade;
           
/**
* 記得導入:import static com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions.withCrossFade;
 */
              
Glide.with(context).load(imageUrl).transition(withCrossFade()).into(imageView);
           

6.5 圖檔大小減小剪裁

必須添加:centerCrop()或fitCenter()才可以;

  •   centerCrop()是将圖檔按照比例放大到imageview的尺寸;
  •   fitCenter()是将圖檔按照比例縮小到imageview的尺寸;
options = new RequestOptions().override(100, 100).centerCrop();

Glide.with(context).load(imageUrl).apply(options).into(imageView);
           

6.6 圓形圖檔

方法一:

options = new RequestOptions().placeholder(R.mipmap.img1).error(R.mipmap.img_error).circleCrop();

Glide.with(context).load(imageUrl).apply(options).into(imageView);
           

方法二:

Glide.with(context).load(imageUrl).apply(RequestOptions.circleCropTransform()).into(imageView);
           

6.7 縮略圖

方法一:

RequestBuilder builder = Glide.with(context).asDrawable().thumbnail(/*sizeMultiplier=*/ 0.25f);

Glide.with(context).load(imageUrl).thumbnail(builder).load(/*縮略圖路徑*/imageUrl2).into(imageView);
           

方法二:

Glide.with(context).load(imageUrl).thumbnail(/*sizeMultiplier=*/ 0.25f).load(imageUrl2).into(imageView);
           

6.8 緩存設定

skipMemoryCache :

                                 true 關閉記憶體緩存,false 打開記憶體緩存

diskCacheStrategy:

                                DiskCacheStrategy.NONE 關閉磁盤緩存

DiskCacheStrategy 的枚舉意義:

  1. DiskCacheStrategy.NONE: 表示不緩存任何内容。
  2. DiskCacheStrategy.DATA: 表示隻緩存原始圖檔。
  3. DiskCacheStrategy.RESOURCE: 表示隻緩存轉換過後的圖檔。
  4. DiskCacheStrategy.ALL : 表示既緩存原始圖檔,也緩存轉換過後的圖檔。
  5. DiskCacheStrategy.AUTOMATIC: 表示讓Glide根據圖檔資源智能地選擇使用哪一種緩存政策(預設選項)。
//關閉記憶體緩存和磁盤緩存
options = new RequestOptions().skipMemoryCache(true).diskCacheStrategy(DiskCacheStrategy.NONE);

Glide.with(context).load(imageUrl).apply(options).into(imageView);
           

6.9 優先級設定

Priority的枚舉:

  1. Priority.LOW
  2.  Priority.NORMAL
  3.  Priority.HIGH
  4. Priority.IMMEDIAT
options = new RequestOptions().priority(Priority.HIGH);

Glide.with(context).load(imageUrl).apply(options).into(imageView);
           

6.10 清空緩存

//清空記憶體緩存,要求在主線程中執行
Glide.get(mContext).clearMemory();

//清空磁盤緩存,要求在背景線程中執行
Glide.get(mContext).clearDiskCache();
           

繼續閱讀