进度条
来源:互联网 发布: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();
阅读全文
0 0