在安卓开发中,通过继承View怎么绘制一个胶囊形状(左右两边为半圆),根据一个RectF的矩形区域来绘制。
时间: 2024-09-18 10:12:52 浏览: 38
在Android开发中,要创建一个胶囊形状(左右两边为半圆),你可以通过继承`View`并重写其`onDraw()`方法来实现。下面是一个简单的步骤:
1. **创建自定义View**:
```java
public class RoundedRectangleView extends View {
private RectF rect;
private Paint roundPaint;
// 构造函数接受矩形的坐标和大小,以及圆角半径
public RoundedRectangleView(Context context, @Nullable AttributeSet attrs, int defStyleAttr, float defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
init();
}
public RoundedRectangleView(Context context, AttributeSet attrs, int defStyleAttr) {
this(context, attrs, defStyleAttr, 0);
}
public RoundedRectangleView(Context context) {
this(context, null, 0, 0);
}
private void init() {
rect = new RectF();
roundPaint = new Paint();
roundPaint.setColor(Color.BLUE);
roundPaint.setStyle(Paint.Style.STROKE);
roundPaint.setStrokeWidth(2);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawRoundRect(rect, getCornerRadius(), getCornerRadius(), roundPaint);
}
// 方法用于设置矩形区域和圆角半径
public void setRectAndRadius(RectF rect, float cornerRadius) {
this.rect.set(rect);
this.cornerRadius = cornerRadius;
invalidate(); // 刷新视图以显示新的绘制结果
}
}
```
2. **在布局文件中使用**:
在XML布局文件中添加这个自定义View,并设置初始矩形和圆角半径:
```xml
<com.example.RoundedRectangleView
android:id="@+id/rounded_rectangle_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:rect_left_top="0dp" app:rect_right_bottom="300dp"
app:corner_radius="50dp" />
```
使用对应的属性如`app:rect_left_top`和`app:cornerRadius`来控制矩形位置和圆角。
3. **在代码中设置和更新**:
```java
RoundedRectangleView view = findViewById(R.id.rounded_rectangle_view);
view.setRectAndRadius(new RectF(320, 320, 600, 600), 50f);
```
现在你已经有了一个能根据RectF区域和圆角绘制胶囊形状的自定义View。
阅读全文