如何设置图像视图的圆角? [复制]

Posted

技术标签:

【中文标题】如何设置图像视图的圆角? [复制]【英文标题】:How to set Rounded Corners of Image View? [duplicate] 【发布时间】:2020-10-09 00:51:26 【问题描述】:

如何设置ImageView的圆角而不是内部图像。

我正在尝试通过滑行设置ImageView 的圆角,但滑行仅设置图像的圆角而不是ImageView

我在CardView 中创建ImageView。我在ImageView 中使用了捏缩放手势。 当我使用 glide 设置 ImageView 的圆角然后 glide 设置图像的角而不是 ImageViewCardView 形状相同。

【问题讨论】:

【参考方案1】:

你可以使用这个库https://github.com/siyamed/android-shape-imageview 它提供了很多形状并且可以帮助你!

首先在你的 build.gradle (app) 中添加这个依赖

compile 'com.github.siyamed:android-shape-imageview:0.9.+@aar'

现在你需要使用圆角图像视图

<com.github.siyamed.shapeimageview.mask.PorterShapeImageView
    android:layout_
    android:layout_
    app:siShape="@drawable/shape_rounded_rectangle"
    android:src="@drawable/neo"
    app:siSquare="true"/>

并创建一个名为shape_rounded_rectangle 的新可绘制文件,其中包含:

<shape android:shape="rectangle" xmlns:android="http://schemas.android.com/apk/res/android">
    <corners
        android:topLeftRadius="18dp"
        android:topRightRadius="18dp"
        android:bottomLeftRadius="18dp"
        android:bottomRightRadius="18dp" />
    <solid android:color="@color/black" />
</shape>

要获得带边框的矩形,只需使用

<com.github.siyamed.shapeimageview.RoundedImageView
    android:layout_
    android:layout_
    android:src="@drawable/neo"
    app:siRadius="6dp"
    app:siBorderWidth="6dp"
    app:siBorderColor="@color/darkgray"
    app:siSquare="true"/>

这就是你得到的:

Image without borders

还有Image with borders

【讨论】:

感谢您回答我...但我正在使用捏合来缩放图像视图中的手势。 我更新了我的问题。现在你可以尝试回答了 @AkashAttal 尝试将 cardview 的角设置为圆角?【参考方案2】:

您可以在自定义 ImageView 中覆盖 onDraw 方法并在画布上绘制 RoundRect:

@Override
    protected void onDraw(Canvas canvas) 
        rect = new RectF(0, 0, this.getWidth(), this.getHeight());
        path.addRoundRect(rect, radius, radius, Path.Direction.CW);
        canvas.clipPath(path);
        super.onDraw(canvas);
    

【讨论】:

以上是关于如何设置图像视图的圆角? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

从图库中获取图像以在片段中的图像视图中设置? [复制]

Android - 如何创建具有圆角和平铺图像背景的视图?

如何在 Collectionview 单元格中为 Uiimageview 设置圆角

如何以编程方式圆角并设置随机背景颜色

如何在android中使用XML布局为图像视图中的图像制作圆角

如何在iOS中使子视图成为圆角作为超级视图?