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();
}
}
效果图: