Ich arbeite an einem Projekt, das erfordert, dass ich einen Kreis an einem zufälligen Ort auf dem Bildschirm zeichne, wenn der Benutzer den Bildschirm berührt. Wenn das Berührungsereignis auftritt, muss auch der letzte Kreis, den ich gezeichnet habe, entfernt werden, so dass immer nur ein Kreis auf dem Bildschirm angezeigt werden kann.Android: Zeichne zufällige Kreise auf dem Bildschirm bei Berührung
Ich habe eine Klasse Kreis, dass ich einen Kreis erstellen:
public class Circle extends View {
private final float x;
private final float y;
private final int r;
private final Paint mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
public Circle(Context context, float x, float y, int r) {
super(context);
mPaint.setColor(0x000000);
this.x = x;
this.y = y;
this.r = r;
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
mPaint.setStyle(Paint.Style.FILL);
mPaint.setColor(Color.RED);
canvas.drawCircle(x, y, r, mPaint);
}
}
Dies ist die Aktivität von dem ein neuer Kreis erstellt wird. Es überwacht auch Berührungsereignisse. Im Moment zeichnet es einen Kreis in der oberen linken Ecke des Bildschirms, aber dieser Code muss in die onTouch-Methode verschoben werden. Ich werde wahrscheinlich die Zufallszahl mit Random
berechnen.
public class FingerTappingActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_finger_tapping);
LinearLayout circle = (LinearLayout) findViewById(R.id.lt);
View circleView = new Circle(this, 300, 300, 150);
circleView.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
circle.addView(circleView);
circle.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
return true;
}
});
}
}
Ich habe noch nie mit Touch-Events vor solchen wie diesen gearbeitet und habe keine Ahnung, wie ich das anstellen soll. Einige Tipps würden sehr geschätzt werden.
Können Sie etwas mehr erklären, was genau im Code passiert? Wäre onTouch nicht in meiner Finger Tapping-Aktivität enthalten? Was macht DrawCircles und was stellt AttributeSet dar? –
Gemäß meinem Code ist die Ansicht für die Behandlung des Berührungsereignisses verantwortlich. Also keine Notwendigkeit, es auf Aktivität zu behandeln. DrawCircles ist eine Ansicht, die zufällig Kreise innerhalb des Ansichtsbereichs zeichnet. AttributeSet ist der Satz von Eigenschaften, der in einer XML-Ressourcendatei angegeben ist. Fügen Sie diese Ansicht einfach in Ihre XML-Datei (activity_finger_tapping) innerhalb des Layouts (lt) ein. – Krish
Okay, das macht Sinn! Was würde ich in der Finger Tapping-Aktivität OnCreate tun? So weit wie Sie einen Kreis aus der Sicht entfernen, wie gehen Sie dabei vor? –