2014-02-05 24 views
6

Ich erstelle ein Spiel, das eine SurfaceView benötigt, um OnTouchListener zu implementieren. Während des Spiels möchte ich den Listener für eine bestimmte Zeit anhalten. Ich habe versucht, false aus der onTouch() Methode zurück, aber immer noch die Methode ausgeführt. Gibt es eine andere Möglichkeit, den Hörer für einige Zeit pausiert? Und jemand bitte erklären, was falsch von onTouch() eigentlich bedeutet zurück zu kommen?Was passiert eigentlich, wenn ich in einem OnTouchListener false zurückgebe?

Antwort

12

Vom View documentation:

Returns 
True if the listener has consumed the event, false otherwise. 

Wenn Sie true Rückkehr sagen Sie android, dass die Presse gesorgt wird. Vergiss es.

Wenn Sie false zurückgeben, sagen Sie grundsätzlich "Nicht mein Problem, jemand anderes wird sich um diesen Klick kümmern müssen". Dann wird Android das Ereignis an andere Ansichten weitergeben, die Ihrer Ansicht nach sein könnten.

0

müssen Sie Ihre Implementierung abmelden. Sie können dies tun, indem Sie null als Parameter angeben. Stellen Sie es erneut ein, wenn der Pause-Modus endet. Wenn Sie return true eingeben, wird das Berührungsereignis nicht an andere mögliche Ansichten übergeben.

3

Wenn Sie true zurückgeben, signalisieren Sie dem System, dass Sie das Ereignis wie in der documentation gesehen verbraucht haben. Dies bedeutet, dass andere Ansichten, die ebenfalls über einen Touchlistener verfügen, dieses Ereignis nicht zur Bearbeitung erhalten. Wenn Sie false zurückgeben, wird das Ereignis an die übergeordneten Ansichten zur Behandlung übergeben.

Wenn Sie beispielsweise ein ListView in einem Viewpager verschachtelt haben, ist die Listview die erste Ansicht, die das touchevent verarbeiten kann. Wenn es sich um einen horizontalen Swipe handelt, wird das Ereignis nicht über die Listview behandelt und der viewpager kann den Swipe verarbeiten.

Verwandte Themen