import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.View;
import com.neusoft.multimedia.R;
public class SectorProgressView extends View {
private int progress = 0; // 进度值,范围 0-100
private Paint progressPaint; // 进度扇形画笔
private Paint backgroundPaint; // 背景画笔
public SectorProgressView(Context context) {
super(context);
init();
}
public SectorProgressView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public SectorProgressView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init();
}
private void init() {
progressPaint = new Paint();
progressPaint.setColor(Color.WHITE);
progressPaint.setStyle(Paint.Style.FILL);
progressPaint.setAntiAlias(true);
backgroundPaint = new Paint();
backgroundPaint.setColor(Color.WHITE);
backgroundPaint.setStyle(Paint.Style.STROKE);
backgroundPaint.setStrokeWidth(getResources().getDimension(R.dimen.px_3));
backgroundPaint.setAntiAlias(true);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
int centerX = getWidth() / 2;
int centerY = getHeight() / 2;
int radius = Math.min(getWidth(), getHeight()) / 2 - getResources().getDimensionPixelSize(R.dimen.px_3);
// 绘制背景圆
canvas.drawCircle(centerX, centerY, radius, backgroundPaint);
// 计算扇形的角度
float sweepAngle = (float) progress / 100 * 360;
// 绘制进度扇形
canvas.drawArc(
centerX - radius,
centerY - radius,
centerX + radius,
centerY + radius,
-90,
sweepAngle,
true,
progressPaint
);
}
// 设置进度的方法
public void setProgress(int progress) {
if (progress < 0) {
progress = 0;
} else if (progress > 100) {
progress = 100;
}
if (progress == this.progress) {
return;
}
this.progress = progress;
invalidate();
}
}
安卓扇形进度条
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 在这浓浓的鞭炮声中,迎来了这个系列的最后一篇。哈哈~这是多么有纪念意义的春节呀。 今天我们来写一个小小的Demo,...
- cocos creator 导出小程序提示分包尚未加载,这是因为你需要在导出的小程序工程根目录下的game.js文...
- 半环形进度图效果: 概述 基于echarts仪表盘,改造半环形进度图 扇形饼状图,半环形图,vue3实现 封装组件...