Picasso 加载图片时高度自适应而宽度固定

想要加载的图片固定为ImageView的宽度, 高度相应调整, 可以使用Transform:

 public static class ImageTransformation {

        static Transformation getTransformation(final ImageView imageView) {
            return new Transformation() {

                @Override
                public Bitmap transform(Bitmap source) {
                    //设置宽度固定为width,如果高度固定宽度自适应同理
                    int targetWidth = imageView.getWidth();
                   
                    double aspectRatio = (double) source.getHeight() / (double)      source.getWidth();
                    int targetHeight = (int) (targetWidth * aspectRatio);
                    Bitmap result = Bitmap.createScaledBitmap(source, targetWidth, targetHeight, false);
                    if (result != source) {
                        //如果是同等大小的就回收
                        source.recycle();
                    }

                    return result;
                }

                @Override
                public String key() {
                    return "transformation" + " desiredWidth";
                }
            };
        }
    }

然后加载图片时:

 Picasso.get().load(imgUrl).transform(ImageTransformation.getTransformation(imageview))
               // .error(R.drawable.default) 
               // .placeholder(R.drawable.default).
                into(imageview);

注意:如果抛出IllegalArgumentException: width and height must be > 0的异常,很可能是因为还没有测量imageview就getWidth()了, 可以用 imageview.post(new Runnable(){})方法 重写run()加载图片。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值