上图演示
package com.skytea.circleview;
import javax.crypto.spec.OAEPParameterSpec;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.RectF;
import android.util.AttributeSet;
import android.view.View;
/**
* @Title: CircleProgressBarView.java
* @Copyright: Copyright 2015年12月14日 下午4:29:55 , All rights reserved
* @Description: TODO
* @author: SkyTea
* @data: 2015年12月14日 下午4:29:55
* @version: V1.0
*/
public class CircleProgressBarView extends View{
private int progress=20;
private int max=100;
private Paint paint;
private RectF oval;
public CircleProgressBarView(Context context, AttributeSet attrs,
int defStyleAttr) {
super(context, attrs, defStyleAttr);
// TODO Auto-generated constructor stub
paint=new Paint();
oval=new RectF();
new Thread(new Runnable() {
@Override
public void run() {
while(true){
progress++;
postInvalidate();
if (progress==100) {
break;
}
try {
Thread.sleep(300);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}).start();
}
public CircleProgressBarView(Context context, AttributeSet attrs) {
this(context,attrs,0);
// TODO Auto-generated constructor stub
}
public CircleProgressBarView(Context context) {
this(context,null);
// TODO Auto-generated constructor stub
}
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
paint.setAntiAlias(true);// 设置是否抗锯齿
paint.setFlags(Paint.ANTI_ALIAS_FLAG);// 帮助消除锯齿
paint.setColor(Color.GRAY);// 设置画笔灰色
paint.setStrokeWidth(10);// 设置画笔宽度
paint.setStyle(Paint.Style.STROKE);// 设置中空的样式
canvas.drawCircle(getWidth()/2, getHeight()/2, 55, paint);
paint.setColor(Color.GREEN);// 设置画笔为绿色
oval.set(getWidth()/2-55, getHeight()/2-55, getWidth()/2+55, getHeight()/2+55);
// canvas.drawRect(oval, paint);
canvas.drawArc(oval, -90, ((float) progress / max) * 360, false, paint);
paint.reset();// 将画笔重置
paint.setStrokeWidth(3);// 再次设置画笔的宽度
paint.setTextSize(35);// 设置文字的大小
paint.setColor(Color.BLACK);// 设置画笔颜色
if (progress == max) {
canvas.drawText("完成", getWidth()/2-25, getHeight()/2, paint);
} else {
canvas.drawText(progress + "%", getWidth()/2-15, getHeight()/2+10, paint);
}
}
}