2010-11-23 9 views
2

Ich versuche, eine Drag & Drop-Funktionalität in einer Android-Anwendung zu implementieren. Der Zieh-Teil ist fertig, das Einzige, was übrig bleibt, ist herauszufinden, in welcher Ansicht die gezogene Ansicht angezeigt wird. Hier ist die OnTouch Funktion meiner geschleppt Ansicht:Wie behandelt man onTouch Event eines Kindes in Eltern?

public boolean onTouch(View v, MotionEvent event) { 
    // Is the event inside of this view? 
    if (!mRegion.contains((int) event.getX(), (int) event.getY())) { 
    return false; 
    } 

    if (event.getAction() == MotionEvent.ACTION_DOWN) { 
    ... 
    System.out.println("**** IMAGE DRAG STARTED!"); 
    return true; 
    } else if (event.getAction() == MotionEvent.ACTION_MOVE) { 
         ... 
    this.invalidate(); 
    return true; 
    } else if (event.getAction() == MotionEvent.ACTION_UP){ 
    System.out.println("**** ICON DRAG ENDED!"); 
    return false; 
    } else { 
    return true; 
    } 
} 

Also im Grunde alle Bewegungsereignisse behandelt werden mit Ausnahme der ACTION_UP (in dem Moment, wenn die Ansicht realeased ist). Die Frage ist, wie soll ich dieses Ereignis in den Eltern aufrufen (übergeben Sie es an die Eltern onTouch-Handler), so kann ich herausfinden, wo es gelöscht wurde. Ich habe das onTouch-Handling in den Eltern implementiert, aber kein Ereignis wird abgefangen.

Danke, Levi

+0

..nice Titel ... –

Antwort

3

Aufschalten onInterceptTouchEvent (Motion Ereignis)

+0

Dank, es funktioniert! –

+0

Mein Vergnügen. Werfen Sie einen Blick auf GestureDetector und VelocityTracker. Sie können sie nützlich finden. – techiServices