Java类中
public class MyProgress extends View {
Paint paint;
int mProgress=0;
int mProgressNum=0;
public MyProgress(Context context) {
super(context);
init();
}
public MyProgress(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public MyProgress(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init();
}
private void init() {
paint=new Paint();
paint.setAntiAlias(true);
}
@Override
protected void onDraw(Canvas canvas) {
paint.setStrokeWidth(0);//防止Arc变粗
paint.setColor(Color.BLACK);
paint.setStyle(Paint.Style.STROKE);
canvas.drawCircle(200,200,100,paint);
canvas.drawCircle(200,200,80,paint);
canvas.drawText(mProgressNum+"%",200,200,paint);//在圆中心显示的百分比
RectF rectF=new RectF(110,110,290,290);
paint.setStrokeWidth(20);
canvas.drawArc(rectF,0,mProgress,false,paint);
}
public void setProgress(int progress){
mProgress=progress;
mProgressNum=progress*100/360;
invalidate();
}
}
MainActivity中
public class MainActivity extends AppCompatActivity {
MyProgress mp;
Button bt_start,bt_reset;
AsyncTask async;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mp= (MyProgress) findViewById(R.id.mp);
bt_start= (Button) findViewById(R.id.bt_start);
bt_reset= (Button) findViewById(R.id.bt_reset);
bt_start.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
async=new AsyncTask<String,Integer,String>(){
@Override
protected String doInBackground(String... strings) {
for (int i=1;i<=360;i++){
if(isCancelled()){
break;
}
SystemClock.sleep(83);
publishProgress(i);
}
return null;
}
@Override
protected void onProgressUpdate(Integer... values) {
if (isCancelled()){
return;
}
mp.setProgress(values[0]);
}
}.execute();
}
});
//点击重置可以重新开始
bt_reset.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(async!=null&&async.getStatus()==AsyncTask.Status.RUNNING){
async.cancel(true);
}
mp.setProgress(0);
}
});
}
}