Android:解决ImageView图片圆角效果与ScaleType属性冲突问题

场景:

在使用ImageView的时候设定了其固定的大小,因此当图片加载上去的时候无疑需要进行中心裁剪达到所需的效果,同时还要设置其圆角大小。
我们知道,我们可以直接在ImageView设置其属性 android:scaleType="centerCrop"

 

然后再通过 RoundedBitmapDrawable 来设置其圆角图片,按道理来说是可以的,但是最终却没有圆角的效果。原因可能是裁剪属性把它给屏蔽了。

RoundedBitmapDrawable roundedBitmapDrawable = RoundedBitmapDrawableFactory.create(getResources(), resource);
roundedBitmapDrawable.setCornerRadius(8);
ivPhoto.setImageDrawable(roundedBitmapDrawable);

解决方案:使用Glide的transform将它转换一下即可。

我们在Glide这里进行统一的裁剪,因此ImageView属性设置里的裁剪就可以去掉了。

 RequestOptions options = new RequestOptions().transform(new CenterCrop());
        Glide.with(this)
                .asBitmap()
                .load(url)
                .apply(options)
                .into(new BitmapImageViewTarget(ivPhoto){
                    @Override
                    protected void setResource(Bitmap resource) {
                        super.setResource(resource);
                        RoundedBitmapDrawable roundedBitmapDrawable = RoundedBitmapDrawableFactory.create(getResources(), resource);
                        roundedBitmapDrawable.setCornerRadius(8);
                        ivPhoto.setImageDrawable(roundedBitmapDrawable);
                    }
                });

你可能感兴趣的:(Andoird)