Ich schreibe ein Programm, das einen Kreis an einem zufälligen Ort auf dem Telefonbildschirm zeichnet. Was es tun soll, ist, wenn der Kreis berührt wird, entfernt er diesen Kreis und verschiebt ihn an einen anderen zufälligen Ort.Android: Kreis bewegt sich an zufällige Position, wenn Sie darauf tippen
Wenn der Bildschirm angetippt wird, wird der alte Kreis entfernt und an einer anderen zufälligen Position auf dem Bildschirm neu gezeichnet. Es ist sehr nah, aber ich habe mich gefragt, wie ich über diese Hürde komme.
public class Circle extends View {
private float x = 300;
private float y = 300;
private int r = 150;
private final Paint mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
private Random random = new Random();
// draws circle
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
mPaint.setStyle(Paint.Style.FILL);
mPaint.setColor(Color.RED);
canvas.drawCircle(x, y, r, mPaint);
}
// constructors
public Circle(Context context) {
super(context);
init();
}
public Circle(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public Circle(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init();
}
void init() {
// might be used later for some data collection
}
// gets random number,,
void generateRandom() {
int w = getWidth() - r - 50;
int h = getHeight()- r - 50;
int border = r + 50;
this.x = border + random.nextInt(w-border);
this.y = border + random.nextInt(h-border);
}
// when screen is tapped, old circle removed, new circle drawn
@Override
public boolean onTouchEvent(MotionEvent event) {
generateRandom();
invalidate();
return super.onTouchEvent(event);
}
}