代码之家  ›  专栏  ›  技术社区  ›  Jay

如果scaleType为centerCrop,则Glide RoundedCornerTransformation不做任何更改

  •  3
  • Jay  · 技术社区  · 7 年前

    我正在使用Glide 4.3.0 wasabeef/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;
    

    我也试过了 CornerType.BOTTOM_LEFT CornerType.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" />
    

    关于更新^,我如何在进行图像中心裁剪的同时仍然进行舍入变换?

    1 回复  |  直到 7 年前
        1
  •  13
  •   Jay    7 年前

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

    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());
    

    使用 centerCrop scaleType XML的属性不适用于Glide库转换。