Glide 图片加载库的坑

  1. CircleImageView 使用Glide 加载时,设置placeholder,导致图片不显示
// 解决:加上.dontAnimate()
.placeholder(R.mipmap.mine_placehold)
.dontAnimate()
  1. 使用Glide 加载的图片,获取bitmap转为为string是报错
java.lang.ClassCastException: com.bumptech.glide.request.target.SquaringDrawable cannot be cast to android.graphics.drawable.BitmapDrawable
// 转化代码如下
// 获取imageview的图片,并且转化为可传递的string
    public static String GetStringByImageView(ImageView imageView){
        // 从ImageView得到Bitmap对象
        Bitmap bitmap = ((BitmapDrawable)imageView.getDrawable()).getBitmap();
        // 把Bitmap转码成字符串
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.PNG, 50,baos);
        String imageBase64 = new String (Base64.encode(baos.toByteArray(), 0));
        return imageBase64;
    }
// 错误分析 :
通过Glide加载的image--
imageView.getDrawable() 获取的Drawable 类型不是BitmapDrawable 
而是 GlideBitmapDrawable
因此类型错误导致
// 解决:加上.asBitmap()
.load(imageURLString)
.asBitmap()

附上一个自己简单封装的activity间传递image的功能类

  1. 使用Glide 加载图片,经常报错 You cannot start a load for a destroyed activity
// 解决:为了一劳永逸我直接获取了application的context用来加载,一劳永逸
// 如下(KapApplication 是自定义的:public class KapApplication extends Application)
// Glide 帮助类
public class KapGlideHelper {
    /**
     * 用Application context 防止出现
     * */
    // 创建gradle
    public static RequestManager CreatedGlide(){
       return Glide.with(KapApplication.getContext());
    }
    // 取消gradle请求
    public static void PaauseRequests(){
        Glide.with(KapApplication.getContext()).pauseRequests();
    }
}
// 使用:
KapGlideHelper.CreatedGlide().load(imageURLString)
                .asBitmap()
                .placeholder(R.mipmap.mine_placehold)
                .into(imageView);
// 缺点是:无法以activity为单位控制网络请求~~

4 .作为GalleryFinal多选框架的图片加载引擎是遇到的一个小问题

                .skipMemoryCache(true)
                //.centerCrop()
                .into(new ImageViewTarget(imageView) {
                    @Override
                    protected void setResource(GlideDrawable resource) {
                        imageView.setImageDrawable(resource);
                    }
                    // adapter_item_tag_key 仅是ids.xml的一个标识符
                    @Override
                    public void setRequest(Request request) {
                        imageView.setTag(R.id.adapter_item_tag_key,request);
                    }
                    @Override
                    public Request getRequest() {
                        return (Request) imageView.getTag(R.id.adapter_item_tag_key);
                    }
                });
// adapter_item_tag_key这个仅仅是一个标识符而已
// 添加于自己的ids.xml中即可

    

附上一个图片选择框架: 图片单选多选裁剪框架

  1. 使用Glide 加载时,设置placeholder,导致android:scaleType="centerCrop"失效
// 我把placehold去掉了。。。。
  1. 使用Glide 加载时,设置placeholder,导致setAdjustViewBounds(true) 失效。。。
// 我把placehold去掉了。。。。

7 .未完~遇到再添加(有遇到别的坑的道友,欢迎下方评论,我等共同踩坑)~~~

你可能感兴趣的:(Glide 图片加载库的坑)