如果scaleType是centerCrop,Glide的RoundedCornersTransformation不会进行任何更改

3

我正在使用 Glide 4.3.0wasabeef/glide-transformations 来为我的图像视图添加左下角和右下角的圆角。图像已经加载,但是转换没有应用,我看不到任何角落的变化。

这是我的 Glide 转换:

Glide.with(context)
    .load(message.imageUrl)
    .apply(bitmapTransform(new RoundedCornersTransformation(25, 0, RoundedCornersTransformation.CornerType.BOTTOM)))
    .into(aq.id(R.id.ivSingleImage).getImageView());

我的导入如下:

import com.bumptech.glide.Glide;
import jp.wasabeef.glide.transformations.RoundedCornersTransformation;
import static com.bumptech.glide.request.RequestOptions.bitmapTransform;

图片已加载但未应用任何转换。这个实现是否正确?
我还尝试了 Bottom_left 和 Bottom_right。
编辑:
我注意到只有在 scaleType 设置为 centerCrop 时才会出现这种情况。如果我从 XML 中删除它,它就能正常工作,但是图像左右两侧会留下两个大的空白间隔。
<ImageView
     android:id="@+id/ivSingleImage"
     android:layout_width="match_parent"
     android:layout_height="100dp"
     android:layout_marginRight="5dp"
     android:layout_weight="1"
     android:background="@color/white"
     android:scaleType="centerCrop" <!--Removing this works. But leaves two spaces on left and right sides-->
     android:layout_marginEnd="5dp" />

关于更新,如何让图片进行centerCrop操作并仍然进行圆角处理?


你能添加一张你所完成的截图吗? - Rajan Kali
为什么你要将背景设置为白色,高度设置为100 dp?尝试使用wrap_content来设置宽度和高度,并且不要设置背景。 - Meenal
@Meenal 已解决。已发布答案。 - Jay
1个回答

15

找到了解决方案。该解决方案使用了我在问题中提到的glide-transformations库中的MultiTransformationCenterCrop转换。

这是解决方案:

MultiTransformation multiLeft = new MultiTransformation(
     new CenterCrop(),
     new RoundedCornersTransformation(25, 0, RoundedCornersTransformation.CornerType.BOTTOM_LEFT));

Glide.with(context)
     .load(message.imageUrl)
     .apply(bitmapTransform(multiLeft))
     .into(aq.id(R.id.ivSingleImage).getImageView());

在XML的scaleType属性中使用centerCrop与Glide库转换不兼容。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接