圆2

xiaoxiao2021-02-28  22

public class CirlcleProgress extends View { public CirlcleProgress(Context context) { super(context); } Paint mPaint; public CirlcleProgress(Context context, @Nullable AttributeSet attrs) { super(context, attrs); mPaint = new Paint(); new Thread(new Runnable() { @Override public void run() { while (true){ if(progress > 360){ return; } postInvalidate(); try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } progress += 2 ; } } }).start(); } public CirlcleProgress(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } int radioWidth = 30 ; int progress = 0 ; int max = 360; @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); int center = getWidth() / 2 ; int radius = center - radioWidth ; mPaint.setColor(Color.RED); mPaint.setStyle(Paint.Style.FILL_AND_STROKE); mPaint.setAntiAlias(true); canvas.drawCircle(center,center,radius,mPaint); mPaint.setStrokeWidth(8); mPaint.setColor(Color.GREEN); mPaint.setStyle(Paint.Style.STROKE); RectF rectF = new RectF(center-radius,center-radius,center+radius,center+radius); System.out.println("progress = " + progress); canvas.drawArc(rectF,-90,progress,false,mPaint); mPaint.setColor(Color.BLACK); mPaint.setStyle(Paint.Style.FILL); int percent = progress; //中间的进度百分比,先转换成float在进行除法运算,不然都为0 float textWidth = mPaint.measureText(percent+" % "); mPaint.setTextSize(20); canvas.drawText((float)progress/(float) 360 * 100 +"%",center,center,mPaint); } }
转载请注明原文地址: https://www.6miu.com/read-800246.html

最新回复(0)