1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

Wie kann ich dieses leichte Problem effizient lösen?

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von lucaaAUT, 23.11.2011.

  1. lucaaAUT, 23.11.2011 #1
    lucaaAUT

    lucaaAUT Threadstarter Junior Mitglied

    Beiträge:
    36
    Erhaltene Danke:
    0
    Registriert seit:
    07.02.2011
    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
     
  2. MichaelS, 23.11.2011 #2
    MichaelS

    MichaelS Fortgeschrittenes Mitglied

    Beiträge:
    370
    Erhaltene Danke:
    51
    Registriert seit:
    14.08.2009
    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
     
  3. lucaaAUT, 23.11.2011 #3
    lucaaAUT

    lucaaAUT Threadstarter Junior Mitglied

    Beiträge:
    36
    Erhaltene Danke:
    0
    Registriert seit:
    07.02.2011
    Ich würde gerne wissen wie ich das Bestimmen des Bereiches am besten mache.
     
  4. MichaelS, 23.11.2011 #4
    MichaelS

    MichaelS Fortgeschrittenes Mitglied

    Beiträge:
    370
    Erhaltene Danke:
    51
    Registriert seit:
    14.08.2009
    wie gesagt du brauchst es nicht selber zu bestimmen... verstehe nicht, warum du es dir so kompliziert machen willst =/
     
  5. DieGoldeneMitte, 24.11.2011 #5
    DieGoldeneMitte

    DieGoldeneMitte Android-Lexikon

    Beiträge:
    1,230
    Erhaltene Danke:
    256
    Registriert seit:
    05.02.2010
    Phone:
    Nexus 5X
    Tablet:
    Nexus 7 (2013)
    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: 24.11.2011

Diese Seite empfehlen