自定义圆形进度条

来源:互联网 发布:实验室洗眼器 淘宝 编辑:程序博客网 时间:2024/06/05 10:26

效果图

这里写图片描述

代码

public class CircleProgressView extends View {    private int mRadius = 50;    private RectF mRectf;    Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);    private String tvContent;    private float mSweepValue;    private int mWidthSize;    private int mHeightSize;    private int length;    public CircleProgressView(Context context, AttributeSet attrs) {        super(context, attrs);        paint.setColor(Color.RED);    }    public void setText(String text){        tvContent = text;    }    @Override    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {        super.onMeasure(widthMeasureSpec, heightMeasureSpec);        mWidthSize = MeasureSpec.getSize(widthMeasureSpec);        mHeightSize = MeasureSpec.getSize(heightMeasureSpec);        if(mWidthSize>=mHeightSize){            length = mHeightSize;        }else{            length = mWidthSize;        }    }    @Override    protected void onDraw(Canvas canvas) {        super.onDraw(canvas);        //圆弧所在的矩形        mRectf = new RectF((float)(length*0.1), (float)(length*0.1), (float)(length*0.9), (float)(length*0.9));        //画圆形        canvas.drawCircle(length/2,length/2,length/4,paint);        //画弧线        Paint arcPaint = new Paint(Paint.ANTI_ALIAS_FLAG);        arcPaint.setColor(Color.GREEN);        arcPaint.setStrokeWidth(40);//画笔宽度        arcPaint.setStyle(Paint.Style.STROKE);//画笔类型为填充        canvas.drawArc(mRectf,270,mSweepValue,false,arcPaint);        //画文字        Paint textPaint = new Paint(Paint.ANTI_ALIAS_FLAG);        textPaint.setTextAlign(Paint.Align.CENTER);        textPaint.setColor(Color.BLACK);        textPaint.setTextSize(35);        canvas.drawText(tvContent,0,tvContent.length(),length/2,length/2+35/4,textPaint);    }    public void setSweepValue(float value){        if(value !=0){            mSweepValue = value;        }else{            mSweepValue = 20;        }    }}
0 0
原创粉丝点击