进度条

来源:互联网 发布:python 数组加减 编辑:程序博客网 时间:2024/06/10 01:05
public class ProgressView extends View{   private Handler handler=new Handler(){        @Override        public void handleMessage(Message msg) {            super.handleMessage(msg);            if(msg.what==0){                progress++;                if(progress<100){                    //重新绘制                    postInvalidate();                    handler.sendEmptyMessageDelayed(0,10);                }                if(progress==100){                    progress=0;                    postInvalidate();                }            }        }    };   int progress=0;    public ProgressView(Context context) {        super(context);    }    public ProgressView(Context context, @Nullable AttributeSet attrs) {        super(context, attrs);    }    public ProgressView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {        super(context, attrs, defStyleAttr);    }    @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)    @Override    protected void onDraw(Canvas canvas) {        super.onDraw(canvas);        Paint paint=new Paint();        paint.setStyle(Paint.Style.STROKE);        paint.setColor(Color.BLACK);        paint.setStrokeWidth(2);        canvas.drawCircle(getMeasuredWidth()/2,getMeasuredHeight()/2,getWidth()/2,paint);        paint.setStyle(Paint.Style.STROKE);        paint.setColor(Color.RED);        RectF rectf=new RectF(0,0,getMeasuredWidth(),getMeasuredHeight());        canvas.drawArc(rectf,0,360*progress/100,false,paint);        String pro=progress+"%";        Rect rect=new Rect();        paint.getTextBounds(pro,0,pro.length(),rect);        canvas.drawText(pro,getMeasuredWidth()/2-rect.width()/2,getMeasuredHeight()/2+rect.width()/2,paint);    }    public  void start(){        handler.sendEmptyMessageDelayed(0,10);    }}
主方法:
        ProgressView progressView = findViewById(R.id.pv);        progressView.start();

原创粉丝点击