效果图

自定义圆形进度条_ide

代码

public class CircleProgressView extends View {
private int mRadius = 50;
private RectF mRectf;
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
private String tvContent;
private float mSweepValue;
private int mWidthSize;
private int mHeightSize;
private int length;
public CircleProgressView(Context context, AttributeSet attrs) {
super(context, attrs);
paint.setColor(Color.RED);
}

public void setText(String text){
tvContent = text;
}

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
mWidthSize = MeasureSpec.getSize(widthMeasureSpec);
mHeightSize = MeasureSpec.getSize(heightMeasureSpec);
if(mWidthSize>=mHeightSize){
length = mHeightSize;
}else{
length = mWidthSize;
}
}

@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
//圆弧所在的矩形
mRectf = new RectF((float)(length*0.1), (float)(length*0.1), (float)(length*0.9), (float)(length*0.9));
//画圆形
canvas.drawCircle(length/2,length/2,length/4,paint);
//画弧线
Paint arcPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
arcPaint.setColor(Color.GREEN);
arcPaint.setStrokeWidth(40);//画笔宽度
arcPaint.setStyle(Paint.Style.STROKE);//画笔类型为填充
canvas.drawArc(mRectf,270,mSweepValue,false,arcPaint);
//画文字
Paint textPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
textPaint.setTextAlign(Paint.Align.CENTER);
textPaint.setColor(Color.BLACK);
textPaint.setTextSize(35);
canvas.drawText(tvContent,0,tvContent.length(),length/2,length/2+35/4,textPaint);
}
public void setSweepValue(float value){
if(value !=0){
mSweepValue = value;
}else{
mSweepValue = 20;
}
}
}