Android 自定义弯曲进度条实现
要实现弯曲的进度条,可以使用 Android 的 Canvas 绘图功能和 Path 类来绘制差不多的形状。
以下是一个简单的实现方式:
- 创建一个自定义 View 类
public class CurvedProgressBar extends View {
private int progress = 0;
private Paint paint;
private Path path;
private RectF rectF;
public CurvedProgressBar(Context context) {
super(context);
init();
}
public CurvedProgressBar(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public CurvedProgressBar(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init();
}
private void init() {
paint = new Paint(Paint.ANTI_ALIAS_FLAG);
paint.setStyle(Paint.Style.FILL);
paint.setColor(Color.BLUE);
path = new Path();
rectF = new RectF();
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
int width = getWidth();
int height = getHeight();
// 计算圆心坐标和半径
int cx = width / 2;
int cy = height / 2;
int radius = Math.min(width, height) / 2 - 10;
// 计算起始和结束角度
int startAngle = 180;
int sweepAngle = (int) (360 * ((float) progress / 100));
// 使用 Path 绘制曲线形状
path.reset();
rectF.set(cx - radius, cy - radius, cx + radius, cy + radius);
path.arcTo(rectF, startAngle, sweepAngle, true);
path.lineTo(cx, cy);
path.close();
// 绘制 Path
canvas.drawPath(path, paint);
}
public void setProgress(int progress) {
this.progress = progress;
invalidate();
}
}
- 在布局文件中添加自定义 View
<com.example.myapplication.CurvedProgressBar
android:id="@+id/progress_bar"
android:layout_width="200dp"
android:layout_height="200dp" />
- 在 Activity 中使用自定义 View
CurvedProgressBar progressBar = findViewById(R.id.progress_bar);
progressBar.setProgress(50);
以上代码实现了一个简单的弯曲进度条,当设置进度为 50 时,会绘制一个半圆形状的进度条。你可以根据需要调整颜色、粗细等绘制参数,或者添加动画效果来增强交互体验。
原文地址: https://www.cveoy.top/t/topic/ozkz 著作权归作者所有。请勿转载和采集!