android 半圆环进度条
时间: 2023-06-25 20:02:49 浏览: 169
Android 提供了一个 `ProgressBar` 控件,可以用来显示进度条。如果要实现半圆环形进度条,可以通过自定义控件来实现。
以下是一个简单的实现方法:
1. 创建一个自定义控件类 `CircularProgressBar`,继承自 `View` 类。
2. 在 `CircularProgressBar` 类中添加一些属性,如进度条的颜色、宽度等。
3. 重写 `onDraw` 方法,绘制半圆环进度条。
具体实现步骤如下:
1. 在 `CircularProgressBar` 类中添加属性:
```java
private int mProgress = 0; // 当前进度
private int mMax = 100; // 最大进度
private int mProgressColor = Color.BLUE; // 进度条颜色
private int mBackgroundColor = Color.GRAY; // 背景颜色
private float mStrokeWidth = 10f; // 进度条宽度
```
2. 在 `onDraw` 方法中绘制半圆环进度条:
```java
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
// 获取控件宽度和高度
int width = getWidth();
int height = getHeight();
// 计算圆心坐标和半径
int centerX = width / 2;
int centerY = height / 2;
int radius = Math.min(centerX, centerY) - (int) (mStrokeWidth / 2);
// 绘制背景圆环
Paint backgroundPaint = new Paint();
backgroundPaint.setColor(mBackgroundColor);
backgroundPaint.setStyle(Paint.Style.STROKE);
backgroundPaint.setStrokeWidth(mStrokeWidth);
canvas.drawCircle(centerX, centerY, radius, backgroundPaint);
// 绘制进度圆环
Paint progressPaint = new Paint();
progressPaint.setColor(mProgressColor);
progressPaint.setStyle(Paint.Style.STROKE);
progressPaint.setStrokeWidth(mStrokeWidth);
progressPaint.setStrokeCap(Paint.Cap.ROUND); // 设置为圆角形状
float sweepAngle = ((float) mProgress / mMax) * 180f; // 计算当前进度所占的角度
canvas.drawArc(new RectF(centerX - radius, centerY - radius, centerX + radius, centerY + radius), -90f, sweepAngle, false, progressPaint);
}
```
3. 在 `CircularProgressBar` 类中添加方法,用于设置进度:
```java
public void setProgress(int progress) {
mProgress = progress;
invalidate(); // 通知控件重绘
}
```
这样就完成了一个简单的半圆环进度条控件的实现。在使用时,可以通过调用 `setProgress` 方法来更新进度。
阅读全文