Matisse: Add Support to Glide 4.X

Created on 29 Jan 2018  ·  3Comments  ·  Source: zhihu/Matisse

Currently, the library won't be working with Glide 4.X although it is stable and the main version for a couple of months.

as of this stacktrace:
java.lang.NoSuchMethodError: No virtual method load(Landroid/net/Uri;)Lcom/bumptech/glide/DrawableTypeRequest; in class Lcom/bumptech/glide/RequestManager; or its super classes (declaration of 'com.bumptech.glide.RequestManager' appears in /data/app/com.inturnex.newsafecam-1/base.apk) at com.zhihu.matisse.engine.impl.GlideEngine.loadThumbnail(GlideEngine.java:36)

This would prevent major users of Glide to use this library.

Most helpful comment

@idish @mikemike396
using this for glide v4:

public class GlideV4ImageEngine implements ImageEngine {

        @Override
        public void loadThumbnail(Context context, int resize, Drawable placeholder, ImageView imageView, Uri uri) {
            RequestOptions requestOptions = new RequestOptions();
            requestOptions = requestOptions.placeholder(placeholder);
            requestOptions = requestOptions.override(resize, resize);
            requestOptions = requestOptions.centerCrop();
            Glide.with(context)
                    .asBitmap()
                    .load(uri)
                    .apply(requestOptions)
                    .into(imageView);
        }

        @Override
        public void loadAnimatedGifThumbnail(Context context, int resize, Drawable placeholder, ImageView imageView, Uri uri) {
            RequestOptions requestOptions = new RequestOptions();
            requestOptions = requestOptions.placeholder(placeholder);
            requestOptions = requestOptions.override(resize, resize);
            requestOptions = requestOptions.centerCrop();
            Glide.with(context)
                    .asBitmap()
                    .load(uri)
                    .apply(requestOptions)
                    .into(imageView);
        }

        @Override
        public void loadImage(Context context, int resizeX, int resizeY, ImageView imageView, Uri uri) {
            RequestOptions requestOptions = new RequestOptions();
            requestOptions = requestOptions.priority(Priority.HIGH);
            requestOptions = requestOptions.override(resizeX, resizeY);
            requestOptions = requestOptions.centerCrop();
            Glide.with(context)
                    .asBitmap()
                    .load(uri)
                    .apply(requestOptions)
                    .into(imageView);
        }

        @Override
        public void loadAnimatedGifImage(Context context, int resizeX, int resizeY, ImageView imageView, Uri uri) {
            RequestOptions requestOptions = new RequestOptions();
            requestOptions = requestOptions.priority(Priority.HIGH);
            requestOptions = requestOptions.override(resizeX, resizeY);
            requestOptions = requestOptions.centerCrop();
            Glide.with(context)
                    .asGif()
                    .load(uri)
                    .apply(requestOptions)
                    .into(imageView);
        }

        @Override
        public boolean supportAnimatedGif() {
            return true;
        }
    }
.imageEngine(new GlideV4ImageEngine())

All 3 comments

Yes! Please add support

@idish @mikemike396
using this for glide v4:

public class GlideV4ImageEngine implements ImageEngine {

        @Override
        public void loadThumbnail(Context context, int resize, Drawable placeholder, ImageView imageView, Uri uri) {
            RequestOptions requestOptions = new RequestOptions();
            requestOptions = requestOptions.placeholder(placeholder);
            requestOptions = requestOptions.override(resize, resize);
            requestOptions = requestOptions.centerCrop();
            Glide.with(context)
                    .asBitmap()
                    .load(uri)
                    .apply(requestOptions)
                    .into(imageView);
        }

        @Override
        public void loadAnimatedGifThumbnail(Context context, int resize, Drawable placeholder, ImageView imageView, Uri uri) {
            RequestOptions requestOptions = new RequestOptions();
            requestOptions = requestOptions.placeholder(placeholder);
            requestOptions = requestOptions.override(resize, resize);
            requestOptions = requestOptions.centerCrop();
            Glide.with(context)
                    .asBitmap()
                    .load(uri)
                    .apply(requestOptions)
                    .into(imageView);
        }

        @Override
        public void loadImage(Context context, int resizeX, int resizeY, ImageView imageView, Uri uri) {
            RequestOptions requestOptions = new RequestOptions();
            requestOptions = requestOptions.priority(Priority.HIGH);
            requestOptions = requestOptions.override(resizeX, resizeY);
            requestOptions = requestOptions.centerCrop();
            Glide.with(context)
                    .asBitmap()
                    .load(uri)
                    .apply(requestOptions)
                    .into(imageView);
        }

        @Override
        public void loadAnimatedGifImage(Context context, int resizeX, int resizeY, ImageView imageView, Uri uri) {
            RequestOptions requestOptions = new RequestOptions();
            requestOptions = requestOptions.priority(Priority.HIGH);
            requestOptions = requestOptions.override(resizeX, resizeY);
            requestOptions = requestOptions.centerCrop();
            Glide.with(context)
                    .asGif()
                    .load(uri)
                    .apply(requestOptions)
                    .into(imageView);
        }

        @Override
        public boolean supportAnimatedGif() {
            return true;
        }
    }
.imageEngine(new GlideV4ImageEngine())

You can find solution For Glide V4 in README .

Was this page helpful?
0 / 5 - 0 ratings