1. Wir haben diesmal 2 Gewinnspiele zeitgleich für euch - Gewinne einmal ein UMI Plus E - Beim 2ten könnt ihr ein Nomu S30 gewinnen!
  1. lucaaAUT, 23.11.2011 #1
    lucaaAUT

    lucaaAUT Threadstarter Junior Mitglied

    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

    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

    Ich würde gerne wissen wie ich das Bestimmen des Bereiches am besten mache.
     
  4. MichaelS, 23.11.2011 #4
    MichaelS

    MichaelS Fortgeschrittenes Mitglied

    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

    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