Wie kann ich dieses leichte Problem effizient lösen?

L

lucaaAUT

Neues Mitglied
0
Hallo,
Ich habe einen OnTouchListener implementiert.
Ich habe 2 Variablen erstellt. int x & int y.
Diese Variablen enthalten die Werte der Position wo ich auf den Bildschirm gedrückt habe.

Jetzt mein Problem. Ich unterteile den Bildschirm in 4 Bereiche?
Wie kann ich jetzt am besten abfragen in welchem Bereich ich bin?
Ich will einen richtigen Code. Also effizient, ohne tausend if-abfragen.
Zumindest ein Ansatz für mich wäre super..
Ich will den Code dann auch herzeigen, also sollte es gut programmiert sein.

Wie würdet ihr das machen?
Die Bereiche sind vertikal angeordet.
Also über die ganze Bildschirmbreite, und die Höhe in Viertel.

Lg
 
Verstehe dein Problem nicht so ganz. Du kannst doch einfach bei jeder View den click handler auf den gleichen setzen wenn du das unbedingt willst und der sender ist die view die geklickt wurde :) somit weißt du doch ohne irgendwelche kordinaten zu checken wo du dich befindest :)

Gruß
MichaelS
 
Ich würde gerne wissen wie ich das Bestimmen des Bereiches am besten mache.
 
wie gesagt du brauchst es nicht selber zu bestimmen... verstehe nicht, warum du es dir so kompliziert machen willst =/
 
MichaelS hat die einfachste Lösung bereits präsentiert: Nimm für jeden der Bereiche einen View und hänge an jeden den passenden onTouchListener dran. Dein Code enthält dan garkeine Vergleiche mehr.

Wenn das aus irgendwelchen Gründen nicht geht: Schreibe für jede Art Bereich eine Klasse mit einer Methode contains(int x, int y) und einer names handle(),
und erzeuge für deine Bereiche Objekte dieser Klasse(n).
Dann kannst du in dem OnTochListener recht einfach vorgehen:

Code:
for( Shape s: regionen ) {
  if( s.contains(x,y) ) { s.handle(); break; }
}
Dann mag dein Code in der Summe vielleicht recht viele int-Vergleiche enthalten (pro Rechteck wären es zum Beispiel 4).
Aber ein int-Vergleich ist nicht teuer und da du offensichtlich noch relativ am Anfang stehst ist es für solche Art Optiminierungen noch definitiv zu früh.

Siehe auch: Premature Optimization
 
Zuletzt bearbeitet:

Ähnliche Themen

M
Antworten
3
Aufrufe
169
moin
M
L
Antworten
15
Aufrufe
909
jogimuc
J
S
Antworten
7
Aufrufe
1.163
swa00
swa00
Zurück
Oben Unten