package com.DeviceTest.view;
|
|
import android.content.Context;
|
import android.graphics.Canvas;
|
import android.graphics.Color;
|
import android.graphics.Paint;
|
import android.graphics.Paint.Style;
|
import android.graphics.Rect;
|
import android.graphics.RectF;
|
import android.util.AttributeSet;
|
import android.view.View;
|
|
public class LevelView extends View {
|
|
private float x = 0;
|
private float y = 0;
|
private Paint paint = new Paint();
|
private RectF rectF = new RectF();
|
|
public LevelView(Context context) {
|
this(context, null);
|
}
|
|
public LevelView(Context context, AttributeSet attrs) {
|
this(context, attrs, 0);
|
}
|
|
public LevelView(Context context, AttributeSet attrs, int defStyle) {
|
super(context, attrs, defStyle);
|
this.setBackgroundColor(Color.WHITE);
|
}
|
|
public void update(float values, float values2) {
|
this.x = values;
|
this.y = values2;
|
postInvalidate();
|
}
|
|
protected void onDraw(Canvas canvas) {
|
int height = getHeight();
|
int width = getWidth();
|
int size = (height > width ? width : height) * 3 / 8;
|
int midX = width / 2;
|
int midY = height / 2;
|
int radius = size / 6;
|
float scaler = (size - radius) / 10F;
|
|
paint.reset();
|
paint.setAlpha(150);
|
|
paint.setColor(Color.RED);
|
paint.setStyle(Style.FILL);
|
|
canvas.drawCircle(midX - x * scaler, midY + y * scaler, radius, paint);
|
canvas.drawCircle(midX - x * scaler, midY + size + radius, radius,
|
paint);
|
canvas.drawCircle(midX - size - radius, midY + y * scaler, radius,
|
paint);
|
|
paint.setTextSize(2 * radius);
|
canvas.drawText("x=" + ((int) (-x * 100) / 100F) + ",y="
|
+ ((int) (-y * 100) / 100F), 0, 2 * radius, paint);
|
|
paint.setStyle(Style.STROKE);
|
paint.setStrokeWidth(2);
|
paint.setColor(Color.BLACK);
|
|
canvas.drawCircle(midX, midY, size, paint);
|
canvas.drawCircle(midX, midY, radius + 1, paint);
|
rectF.set(midX - size - 2 * radius, midY - size, midX - size, midY
|
+ size);
|
canvas.drawRoundRect(rectF, radius, radius, paint);
|
rectF.set(midX - size, midY + size, midX + size, midY + size + 2
|
* radius);
|
canvas.drawRoundRect(rectF, radius, radius, paint);
|
|
canvas.drawLine(midX - radius, midY + size, midX - radius, midY + size
|
+ 2 * radius, paint);
|
canvas.drawLine(midX + radius, midY + size, midX + radius, midY + size
|
+ 2 * radius, paint);
|
|
canvas.drawLine(midX - size - 2 * radius, midY - radius, midX - size,
|
midY - radius, paint);
|
canvas.drawLine(midX - size - 2 * radius, midY + radius, midX - size,
|
midY + radius, paint);
|
|
}
|
}
|