美文网首页
glide .asBitmap()后.placeholder()

glide .asBitmap()后.placeholder()

作者: 梦半觉 | 来源:发表于2017-03-25 21:21 被阅读1273次

    实现瀑布流过程中使用glide来获取网络图片。
    现在有这么一个需求:根据图片的宽高比来设置ImageView的宽高比。
    因此需要用到glide的target回调来自己处理bitmap。

    Glide.with(img.getContext())
                            .load(imgUrl)
                            .asBitmap()
                            .placeholder(R.drawable.v)//设置加载中图片
                            .error(R.drawable.v)//设置加载失败图片
                            .dontAnimate()
                            .diskCacheStrategy(DiskCacheStrategy.ALL)
                            .into(target);
    
     private SimpleTarget target = new SimpleTarget<Bitmap>() {
                @Override
                public void onResourceReady(Bitmap bitmap, GlideAnimation glideAnimation) {
                    int bitmapWidth = bitmap.getWidth();//获取网络图片宽度
                    int bitmapHeight = bitmap.getHeight();//获取网络图片高度
                    int width = ScreenUtil.getScreenWidth(img.getContext());//获取屏幕宽度
                    //设置ImageView的参数
                    ViewGroup.LayoutParams params = img.getLayoutParams();
                    //设置图片的相对于屏幕的宽高比
                    params.width = width / clolums;
                    params.height = (bitmapHeight * params.width) / bitmapWidth;
                    img.setLayoutParams(params);
                    Glide.with(img.getContext())
                            .load(imgUrl)
                            .override(params.width, params.height)//重定义加载网络图片大小
                            .placeholder(R.drawable.v)//设置加载中图片
                            .error(R.drawable.v)//设置加载失败图片
                            .dontAnimate()//移除动画
                            .diskCacheStrategy(DiskCacheStrategy.ALL)
                            .into(img);
                }
            };
    

    接下来应该很多人会问为什么再次调用 glide,为什么不直接处理bitmap,然后给 imageview 设置bitmap。
    因为.asBitmap()后.placeholder()无效果,所以只能再进行一次glide调用。
    (PS:如果设置了加载中的占位图,那么得加上.dontAnimate(),要不会出现奇怪的现象)

    相关文章

      网友评论

          本文标题:glide .asBitmap()后.placeholder()

          本文链接:https://www.haomeiwen.com/subject/bozcottx.html