Frage von Corleonefactory, 47

Android Rechtecke zeichnen un bewegen?

Guten Tag

Wie kann ich in Android ein Rechteck erstellen, welches sich vom oberen Bildrand zum unteren Bildrand kontinuirlich bewegt. Ich möchte dies wenn möglich durch "Canvas" realisieren. Anschliessend soll ein Spieler erstellt werden, welcher bei Kollision mit dem Rechteck eine Meldung ausgibt.

Antwort
von MalNachgedacht, 21

Es gibt natürlich viele Möglichkeiten

z.B. eine von View abgeleitete Klasse die per match_Parent die gesamte Höhe und Breite des Displays annimmt als Basis.

Innerhalb dieser eigene View-Klasse dann die Methode 

onDraw(android.graphics.Canvas canvas) 

überschreiben und darin dann das Rechteck malen.

Da sich das Rechteck bewegen soll hängt seine Position ja von der Zeit ab.

mit System.currentTimeMillis() kann mit die Ermitteln und muß diese in eine Position (in deinem Fall in eine Y-Koordinate) umrechnen.

Dazu muss man eine Geschwindigkeiit festlegen (Pixel pro Millisekunde) und damit das ganze geräteunabhängig wird sollte man die tatsächliche Größe des Views in Pixel berücksichtigen denn man ja mit getHeight() bzw. getWidth() abfragen kann.

Am Ende brauchst Du also eine Formel welche eine Y-Koordinate im Bereich 0 bis getHeight() liefert und zwar in Anhängigkeit von der aktuellen Zeit in Millisekunden die System.currentTimeMillis()
Wenn die Zeit für einen Flug von ganz oben bis ganz unten 1000 Millisekunden betragen soll dann empfiehlt es sich 

(System.currentTimeMillis() % 1000) dafür zu sorgen dass die "Uhr" immer von 0..999 läuft und dann wieder bei 0 startet.



y=(System.currentTimeMillis() % 1000)*getHeight() / 1000;

würde dann ein y-Koordinate für das zu zeichnende Reckteck liefern die einmal pro Sekunde vom oberen zum unteren Rand "läuft" - egal wie groß das jeweilige Display und egal wie schnell der jeweilige Prozessor ist



Keine passende Antwort gefunden?

Fragen Sie die Community