1. 程式人生 > >Glide4.8.0升級後的使用

Glide4.8.0升級後的使用

Glide在升級到4.8.0之後,明顯的兩點不同—依賴以及使用:

1.引入依賴

implementation ("com.github.bumptech.glide:glide:4.8.0") {
        exclude group: "com.android.support"
    }
    annotationProcessor 'com.github.bumptech.glide:compiler:4.8.0'

在這裡如果不加exclude group: "com.android.support"
會造成support包引入衝突bug,eg:

Program type already present: android.support.design.widget.CoordinatorLayout$1
Message{kind=ERROR, text=Program type already present: android.support.design.widget.CoordinatorLayout$1, sources=[Unknown source file], tool name=Optional.of(D8)}

2.使用之後,原方法error/preload/fallback/signature無法使用
在這裡插入圖片描述
檢視新的api,要求提供 “new RequestBuilder()”

 public static void display(Context context, ImageView imageView, String url) {
        if (imageView == null) {
            throw new IllegalArgumentException("argument error");
        }

        RequestOptions   requestOptions = new RequestOptions()
                .diskCacheStrategy(DiskCacheStrategy.ALL)
                .placeholder(new ColorDrawable(Color.BLACK))
                .error(new ColorDrawable(Color.BLUE))
                .centerCrop();
       
        Glide.with(context).load(url)
                .apply(requestOptions)
                .into(imageView);

    }

原方法error/preload/fallback等方法都在RequestOptions中新增,其中之前.signature()方法形參支援使用StringSignature,但是現在StringSignature完全被廢掉了,不過你可以借用signature方法中的Key中的一個使用相對方便的子類ObjectKey,構造方法以Object為引數:

RequestOptions   requestOptions = new RequestOptions()
                .signature(new ObjectKey(System.currentTimeMillis()))
                .centerCrop();

        Glide.with(context).load(url)
                .apply(requestOptions)
                .into(imageView);

signature它是用來重新整理glide填充的圖片重新整理用的。
簡單使用,先整起來,具體原因下次分曉。