Android 自定义圆角ImageView

个人中心

DownLoad

Android开发中,我们经常会使用ImageView来显示图片,但是默认的ImageView并不支持圆角的显示。我们可以通过自定义一个圆角ImageView来实现这个功能。

以下是实现的步骤:

  1. 创建一个继承自ImageView的类

public class RoundCornerImageView extends ImageView {

    public RoundCornerImageView(Context context) {

        super(context);

    }

    public RoundCornerImageView(Context context, AttributeSet attrs) {

        super(context, attrs);

    }

    public RoundCornerImageView(Context context, AttributeSet attrs, int defStyleAttr) {

        super(context, attrs, defStyleAttr);

    }

    @Override

    protected void onDraw(Canvas canvas) {

        Path path = new Path();

        float[] radii = new float[]{ 10, 10, 10, 10, 0, 0, 0, 0};

        path.addRoundRect(new RectF(0, 0, getWidth(), getHeight()), radii, Path.Direction.CW);

        canvas.clipPath(path);

        super.onDraw(canvas);

    }

}

  1. 重写ImageView的onDraw方法

我们需要在onDraw方法中绘制一个圆角矩形的剪裁路径,然后将绘制内容限制在该路径内。可以使用Path类来绘制圆角矩形的剪裁路径,并使用CanvasclipPath方法来限制绘制内容。

在这个例子中,我们使用了一个半径为10dp的圆角矩形,其中前四个角的半径都是10dp,而后四个角的半径都是0,实现了只有左上,右上两个角为圆角的效果。

  1. 在布局文件中使用自定义的RoundCornerImageView

<com.example.myapp.RoundCornerImageView

    android:layout_width="200dp"

    android:layout_height="200dp"

    android:src="@drawable/image"

    android:scaleType="centerCrop"

    app:layout_constraintStart_toStartOf="parent"

    app:layout_constraintEnd_toEndOf="parent"

    app:layout_constraintTop_toTopOf="parent"

    app:layout_constraintBottom_toBottomOf="parent"/>

这个例子中,我们使用了自定义的RoundCornerImageView,并设置了宽度和高度为200dp,使用了一张图片作为src,并设置了scaleTypecenterCrop,将图片填充到整个ImageView中。最后使用了ConstraintLayout进行布局。

通过以上步骤,我们就可以实现一个带有圆角的ImageView了。

猜你喜欢

转载自blog.csdn.net/YDHIT/article/details/130946706