public class RapidView extends View {
public Paint radarPaint;
public Paint pathPaint;
public Paint valuePaint;
public Paint textPaint;
public Paint radarLinePaint;
public float radius;
public int centerX;
public int centerY;
private Path path;
private Path valuePath;
public RapidView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
init();
}
private void init() {
path = new Path();
valuePath = new Path();
radarPaint = new Paint();
radarPaint.setColor(0xFFC1FFC1);
radarPaint.setStrokeWidth(10);
radarPaint.setStyle(Paint.Style.STROKE);
pathPaint = new Paint();
pathPaint.setColor(0xFF8EE5EE);
pathPaint.setStrokeWidth(10);
pathPaint.setStyle(Paint.Style.STROKE);
textPaint = new Paint();
textPaint.setColor(0xFF0000ff);
textPaint.setStrokeWidth(10);
textPaint.setTextSize(60);
textPaint.setStyle(Paint.Style.FILL);
radarLinePaint = new Paint();
radarLinePaint.setColor(0xFFC1FFC1);
radarLinePaint.setStrokeWidth(5);
radarLinePaint.setStyle(Paint.Style.FILL);
valuePaint = new Paint();
valuePaint.setColor(0x666A5ACD);
valuePaint.setStrokeWidth(50);
valuePaint.setStyle(Paint.Style.FILL);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
radarPaint.setStrokeWidth(20);
canvas.drawPoint(centerX,centerY,radarPaint);
//画六层网格
canvas.drawPoint(centerX+radius,centerY,radarPaint);
canvas.drawPoint(centerX-radius,centerY,radarPaint);
for (int i = 0; i < 6; i++) {
float currentRadius = radius/6*(i+1);
path.reset();
path.moveTo(centerX+currentRadius,centerY);
for (int j = 0; j < 6; j++) {
float x = (float) (centerX+currentRadius*(Math.cos(Math.PI*2/6*(j+1))));
float y = (float) (centerY+currentRadius*(Math.sin(Math.PI*2/6*(j+1))));
path.lineTo(x,y);
// canvas.drawText(""+j,x,y,textPaint);
canvas.drawPoint(x,y,radarPaint);
if(i==5){
canvas.drawLine(centerX,centerY,x,y,radarLinePaint);
}
if(i==0 && j==1){
valuePath.moveTo(x,y);
} else if (i==1 && j==2) {
valuePath.lineTo(x,y);
} else if (i==2 && j==3) {
valuePath.lineTo(x,y);
} else if (i==3 && j==4) {
valuePath.lineTo(x,y);
}else if (i==4 && j==5) {
valuePath.lineTo(x,y);
}
}
path.close();
canvas.drawPath(path,pathPaint);
}
valuePath.close();
canvas.drawPath(valuePath,valuePaint);
}
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
centerX = w/2;
centerY = h/2;
radius = Math.min(w,h)/2*0.9f;
postInvalidate();
}
}