在安卓开发中,怎么通过继承View控件,绘制一个圆角矩形,并且如何让圆角矩形的左右两边正好是两个半圆,写一个完整的例子
时间: 2024-09-18 08:13:08 浏览: 36
在Android开发中,如果你想要自定义一个带圆角的矩形View,通常会创建一个自定义的ShapeDrawable,然后将其设置为View的背景。这里是一个简单的例子,我们将创建一个名为`RoundRectangleView`的自定义View,它将继承自`View`并拥有圆角矩形形状:
首先,创建一个名为`RoundRectangleDrawable`的自定义Drawable,用于绘制圆角矩形:
```java
public class RoundRectangleDrawable extends ShapeDrawable {
private float cornerRadius;
public RoundRectangleDrawable(float cornerRadius) {
this.cornerRadius = cornerRadius;
setShape(new RectShape());
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Path path = new Path();
path.addRoundRect(getBounds(), cornerRadius, cornerRadius, Path.Direction.CW);
canvas.drawPath(path, getPaint());
}
}
```
接着,在你的`RoundRectangleView`中使用这个Drawable作为背景:
```java
public class RoundRectangleView extends View {
public RoundRectangleView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
// 设置圆角矩形的边长和半径
int borderWidth = dip2px(context, 4); // 可以调整边框宽度
int borderRadius = dip2px(context, 8); // 半径可以根据需要调整
// 创建并设置自定义Drawable
RoundRectangleDrawable drawable = new RoundRectangleDrawable(borderRadius);
drawable.setStroke(borderWidth, Color.BLACK);
setBackground(drawable);
}
private static int dip2px(Context context, float dp) {
return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, context.getResources().getDisplayMetrics());
}
}
```
在这个例子中,`dip2px`函数用于将dp单位转换为像素,使得圆角大小跟随屏幕密度调整。现在,你可以像使用普通的`View`一样实例化和添加到布局中。
阅读全文