在Android开发中,我们经常会使用ImageView来显示图片,但是默认的ImageView并不支持圆角的显示。我们可以通过自定义一个圆角ImageView来实现这个功能。
以下是实现的步骤:
- 创建一个继承自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);
}
}
- 重写ImageView的onDraw方法
我们需要在onDraw方法中绘制一个圆角矩形的剪裁路径,然后将绘制内容限制在该路径内。可以使用Path类来绘制圆角矩形的剪裁路径,并使用Canvas的clipPath方法来限制绘制内容。
在这个例子中,我们使用了一个半径为10dp的圆角矩形,其中前四个角的半径都是10dp,而后四个角的半径都是0,实现了只有左上,右上两个角为圆角的效果。
- 在布局文件中使用自定义的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,并设置了scaleType为centerCrop,将图片填充到整个ImageView中。最后使用了ConstraintLayout进行布局。
通过以上步骤,我们就可以实现一个带有圆角的ImageView了。