android 半圆进度条 圆环
时间: 2023-06-25 19:02:26 浏览: 59
在 Android 中实现半圆进度条和圆环可以使用自定义 View,以下是一个简单的实现:
1. 创建一个继承自 View 的类,重写 onDraw 方法。
2. 在 onDraw 方法中画出半圆或圆环的背景。
3. 画出进度(半圆或圆环)。
4. 在 Activity 中使用这个自定义 View。
下面是一个示例代码,实现了一个半圆进度条和一个圆环进度条:
```java
public class HalfCircleProgressBar extends View {
private int mBackgroundColor = Color.LTGRAY;
private int mProgressColor = Color.BLUE;
private int mProgress = 0;
private Paint mPaint;
public HalfCircleProgressBar(Context context) {
super(context);
init();
}
public HalfCircleProgressBar(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public HalfCircleProgressBar(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init();
}
private void init() {
mPaint = new Paint();
mPaint.setAntiAlias(true);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
// 画出背景半圆
mPaint.setColor(mBackgroundColor);
int width = getWidth();
int height = getHeight();
int radius = Math.min(width, height) / 2;
canvas.drawArc(new RectF(0, 0, 2 * radius, 2 * radius), 180, 180, true, mPaint);
// 画出进度半圆
mPaint.setColor(mProgressColor);
float angle = mProgress / 100f * 180f;
canvas.drawArc(new RectF(0, 0, 2 * radius, 2 * radius), 180, angle, true, mPaint);
}
public void setBackgroundColor(int color) {
mBackgroundColor = color;
invalidate();
}
public void setProgressColor(int color) {
mProgressColor = color;
invalidate();
}
public void setProgress(int progress) {
mProgress = progress;
invalidate();
}
}
```
使用方法:
```xml
<com.example.HalfCircleProgressBar
android:id="@+id/progress_bar"
android:layout_width="200dp"
android:layout_height="100dp"
android:layout_gravity="center"
app:backgroundColor="@color/gray"
app:progressColor="@color/blue" />
```
```java
HalfCircleProgressBar progressBar = findViewById(R.id.progress_bar);
progressBar.setProgress(50); // 设置进度为 50%
```
圆环进度条的实现类似,只需要将半圆换成圆环即可。