Android 使用com.github.LuckSiege.PictureSelector依赖时, Glide框架无法使用占位图placeholder、asgif、overload等方法

错误如下:

Caused by: java.lang.NoSuchMethodError: com.bumptech.glide.RequestManager.load

典型的一个项目中的依赖冲突:

implementation 'com.github.LuckSiege.PictureSelector:picture_library:v2.1.1'

compile 'jp.wasabeef:glide-transformations:2.0.2'

的冲突。

第一个相册图片选择依赖中含有了glide 4,所以第二个的glide会出现异常,没有导入第一个依赖时,项目还是正常的,下面看看解决方法:

1.把gradle里的依赖改成:

compile ('com.github.LuckSiege.PictureSelector:picture_library:v2.1.0'){
        exclude group: 'com.github.bumptech.glide'
    }

2.注释低版本的glide依赖包,我就是注释了我的第二个glide依赖,当然,这会牵连到修改之前的glide版本代码的写法:

import android.content.Context;
import android.graphics.Bitmap;
import android.widget.ImageView;

import com.bumptech.glide.Glide;
import com.bumptech.glide.request.RequestOptions;
//import com.bumptech.glide.request.animation.GlideAnimation;
import com.bumptech.glide.request.target.SimpleTarget;
import com.github.chrisbanes.photoview.PhotoView;
import com.iruiyou.common.R;
import com.iruiyou.common.RyCommon;

import java.io.File;

//import jp.wasabeef.glide.transformations.BlurTransformation;
//import jp.wasabeef.glide.transformations.CropCircleTransformation;

/**
 * 类描述:图片加载
 * 作者:Created by sgf
 */

public class GlideUtils {
    /**
     * 标准图片
     *
     * @param url
     * @param imageView
     */
    public static void display(String url, ImageView imageView) {
        Glide.with(RyCommon.getInstance().getConfiguration().getContext()).load(url).into(imageView);
    }

    /**
     * 加载圆形图片
     *
     * @param context
     * @param url
     * @param imageView
     */
    public static void displayRound(Context context, String url, ImageView imageView) {

        RequestOptions options = new RequestOptions();
        options.placeholder(R.drawable.head_home);
        //切圆
        options.circleCrop();
        Glide.with(context).load(url).apply(options).into(imageView);

//        Glide.with(context).load(url).error(R.drawable.head_home).bitmapTransform(new CropCircleTransformation(context))
//                .into(imageView);
    }

    /**
     * 加载模糊图片
     *
     * @param context
     * @param url
     * @param imageView
     * @param radius
     */
    public static void displayBlur(Context context, String url, ImageView imageView, int radius) {
//        Glide.with(context).load(url).bitmapTransform(new BlurTransformation(context, radius))
//                .into(imageView);
    }

    /**
     * 加载文件图片
     *
     * @param context
     * @param path
     * @param iv
     */
    public static void displayFile(Context context, String path, ImageView iv) {
        if (path == null) {
            return;
        }
        RequestOptions options = new RequestOptions();
        options.placeholder(R.drawable.head_home);
        //切圆
        options.circleCrop();
        Glide.with(context).load(new File((path))).apply(options).into(iv);
//        Glide.with(context).load(new File(path)).bitmapTransform(new CropCircleTransformation(context)).into(iv);
    }

//    public static void displayGif(Context context , String path , ImageView iv){
//        Glide.with(context).load(R.drawable.mgif).asGif().diskCacheStrategy(DiskCacheStrategy.SOURCE).into(imageView);
//        if (path == null){
//            return;
//        }
//        Glide.with(context).load(new File(path)).bitmapTransform( new CropCircleTransformation(context)).into(iv);
//    }

    public static void displayBitmap(Context context, String path, final PhotoView photoView) {
//        Glide.with(context).load(path).asBitmap().into(new SimpleTarget(){
//
//            @Override
//            public void onResourceReady(Bitmap resource, GlideAnimation glideAnimation) {
//                photoView.setImageBitmap(resource);
//            }
//        });
    }


}

可以看到,注释的是我之前第二个依赖的写法,修改成glide 4 后的写法还是不一样的,修改好就可以了。

你可能感兴趣的:(Android常用的技术)