移动开发-----自定义View(圆环)

来源:互联网 发布:卡哇伊字体软件 编辑:程序博客网 时间:2024/06/08 07:50
import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.RectF;import android.support.annotation.Nullable;import android.util.AttributeSet;import android.view.View;public class CircleView extends View {    private Paint mPaint;    private Paint mPaintBg;    private RectF mRectF;    private int mEndAngle = 120;    private String mPaintColor = "#FFFFFF";    public CircleView(Context context) {        super(context);        initData();    }    public CircleView(Context context, @Nullable AttributeSet attrs) {        super(context, attrs);        initData();    }    public CircleView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {        super(context, attrs, defStyleAttr);        initData();    }    private void initData() {        mPaint = new Paint();        mPaint.setStrokeWidth(100);        mPaint.setColor(Color.parseColor(mPaintColor));        mPaint.setAntiAlias(true);        mPaint.setStyle(Paint.Style.STROKE);        mPaint.setStrokeCap(Paint.Cap.BUTT);        mRectF = new RectF();        mPaintBg = new Paint();        mPaintBg.setStrokeWidth(100);        mPaintBg.setColor(Color.parseColor("#36FFFFFF"));        mPaintBg.setAntiAlias(true);        mPaintBg.setStyle(Paint.Style.STROKE);        mPaintBg.setStrokeCap(Paint.Cap.BUTT);    }    @Override    protected void onSizeChanged(int w, int h, int oldw, int oldh) {        super.onSizeChanged(w, h, oldw, oldh);        int minSize = Math.min(getMeasuredWidth() - getPaddingLeft() - getPaddingRight(),                getMeasuredHeight() - getPaddingTop() - getPaddingBottom());        int roat = minSize / 2;        int CenterPointX = getMeasuredWidth() / 2;        int CenterPointY = getMeasuredHeight() / 2;        mRectF.left = CenterPointX - roat + (int)mPaint.getStrokeWidth()/2;        mRectF.top = CenterPointY - roat + (int)mPaint.getStrokeWidth()/2;        mRectF.right = CenterPointX + roat -  (int)mPaint.getStrokeWidth()/2;        mRectF.bottom = CenterPointY + roat -  (int)mPaint.getStrokeWidth()/2;    }    @Override    protected void onDraw(Canvas canvas) {        super.onDraw(canvas);        canvas.drawArc(mRectF,-90,mEndAngle,false,mPaint);        canvas.drawArc(mRectF,0,360,false,mPaintBg);        //增加锯齿        for (int i = 0; i < 90 ; i++) {            canvas.drawArc(mRectF,i * 4 ,2,false,mPaintBg);        }    }    public void setEndAngle(int endAngle){        this.mEndAngle = endAngle;        invalidate();    }    public void setPaintColor(String paintColor){        this.mPaintColor = paintColor;        mPaint.setColor(Color.parseColor(this.mPaintColor));        invalidate();    }}


效果图: