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. Skolleus, 18.03.2011 #1
    Skolleus

    Skolleus Threadstarter Neuer Benutzer

    Hi Leute,

    ich versuche gerade aus dem Display des Galaxy Tabs eine Art Touchpad zu machen.
    Problemlos war die Oberfläche selbst mit Übertragung der Koordinaten, der Menge der Pointer (Finger) usw.
    Jetzt möchte ich aber auch 3 Buttons auf dem Display anzeigen.
    Dabei soll da natürlich in deren Bereich kein touchevent passieren sondern ein clickevent.
    In meiner Main.xml hab ich dafür ein AbsoluteLayout,
    darin 3 Buttons im oberen Bereich und ein weiteres AbsoluteLayout (id: touchSurface) darunter.
    Der OnTouchListener ist auf touchSurface registriert und da die nicht im Bereich der Buttons liegt wird kein touchevent ausgegführt wenn ich auf einen Button klicke. Stattdessen sind da 3 Clickevents registriert die auch auslösen.

    Meine 3 Probleme:
    1. Wenn ich meinen Finger über die touchSurface in Richtung Buttons bewege, wird auch über den Buttons ein touchEvent (Action_Move) ausgeführt.
    2. Wenn ich meinen Finger auf der touchSurface halte, wird mit einem 2. Finger auf einem der Buttons kein clickEvent ausgelöst sondern er wird als 2. Pointer in der touchSurface erkannt.
    (Kurz: Problem 1+2) Der OnTouchListener ist nicht auf die touchSurface begrenzt wenn innerhalb der touchSurface ein touchEvent ausgelöst wird.
    3. Der clickEvent wird nicht beim Klicken sondern beim Loslassen abgefeuert.

    Gibts dafür eine einfache Lösung?
    Muss irgendwas mit der Reihenfolge der Eventverarbeitung zu tun haben. Hab schon versucht den Ontouchlistener auf das unterste AbsoluteLayout zu registrieren und die Buttons in einem eigenen AbsoluteLayout darüber.
    Hat auch nicht geholfen.


    edit: Scheinbar liegt es daran, dass immer zuerst der OnTouchListener feuert und erst danach der OnClickListener.
     
    Zuletzt bearbeitet: 18.03.2011

Diese Seite empfehlen