package fengras.com.baifenbi.view; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.RectF; import android.os.Handler; import android.os.Message; import android.util.AttributeSet; import android.view.View; /** * Created by Administrator on 2017/4/9. */ public class Mycircle extends View { private Paint mpanit,tpaint,m2paint; private float length; private int progress; private float mRadius; private RectF mRectF; private String text; Handler han = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); progress++; invalidate(); if (progress < 360) han.sendEmptyMessageDelayed(0, 30); } }; public Mycircle(Context context) { super(context); initview(); } private void initview() { mpanit=new Paint(); mpanit.setColor(Color.GREEN); mpanit.setAntiAlias(true); mpanit.setStrokeWidth(50); mpanit.setStyle(Paint.Style.STROKE); m2paint=new Paint(); m2paint.setColor(Color.YELLOW); m2paint.setAntiAlias(true); m2paint.setStrokeWidth(20); m2paint.setStyle(Paint.Style.STROKE); tpaint=new Paint(); tpaint.setColor(Color.GREEN); tpaint.setAntiAlias(true); tpaint.setStrokeWidth(0); tpaint.setStyle(Paint.Style.STROKE); } public Mycircle(Context context, AttributeSet attrs) { super(context, attrs); initview(); } @Override protected void onSizeChanged(int w, int h, int oldw, int oldh) { super.onSizeChanged(w, h, oldw, oldh); length = w; // mCircleXY = length / 2; // mRadius = (float) (length * 0.5 / 2); } public Mycircle(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); initview(); } @Override protected void onDraw(Canvas canvas) { mRectF = new RectF((float) (length * 0.1), (float) (length * 0.1), (float) (length * 0.9), (float) (length * 0.9)); text = (int)(progress*100/360) + "%"; canvas.drawArc(mRectF, 270, 360, false, mpanit); canvas.drawArc(mRectF, 270,progress, false, m2paint); float textWidth = tpaint.measureText(text); //测量字体宽度,我们需要根据字体的宽度设置在圆环中间 canvas.drawText(text, (int) (length / 2 - textWidth / 2), (int) (length / 2 + textWidth / 2), tpaint); } public void State() { progress = 0; han.sendEmptyMessageDelayed(0, 30); } }package fengras.com.baifenbi; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import fengras.com.baifenbi.view.Mycircle; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Mycircle mycircle= (Mycircle) findViewById(R.id.my); mycircle.State(); } }
自定义进度条
最新推荐文章于 2023-03-25 14:20:06 发布