Scrollende Verzögerung mit GestureDetector onScroll

8

Ich verwende GestureDetector , um das Scrollen innerhalb einer benutzerdefinierten View zu implementieren. Meine Implementierung basiert auf diesem: Smooth Scrolling mit Trägheit und Kantenwiderstand / Snapback

Ich habe eine kurze Pause bemerkt, bevor das Scrollen beginnt: Ich habe die onScroll -Nachrichten untersucht und festgestellt, dass die erste nur nach einer größeren Bewegung eines Fingers ankommt, was zu merklichen Verzögerungen am Anfang des Scrollens führt. Danach ist das Scrollen sanft.

Es scheint, dass GestureDetector erst nach einem minimalen Abstand zwischen den Bewegungsereignissen onScroll -Nachrichten sendet, um sicherzustellen, dass die Geste kein Longtap oder Tap ist (zwischendurch setze ich setIsLongpressEnabled(false) ).

Gibt es eine Möglichkeit, dieses Verhalten zu ändern und ein sanftes Scrollen zu erstellen, ohne eine benutzerdefinierte Scroll-Geste mit Touch-Ereignissen auf niedriger Ebene zu implementieren?

    
hthms 18.08.2011, 13:56
quelle

1 Antwort

10

Die Antwort ist nein, Sie müssen Ihre eigene GestureDetector erstellen. Wenn Sie sich den Android-Quellcode ansehen ( GestureDetector.java ) Linien 524 bis 540 werden verwendet, um den" Touch Slop "für eine einzelne Berührung zu erkennen. Insbesondere verhindert die Leitung 528, dass das Ereignis onScroll aufgerufen wird, bis die Bewegung außerhalb des Berührungslochs ist (das aus der Ansichtskonfiguration gezogen wird). Sie können die Ansichtskonfiguration nicht ändern und der Slop ist bei 16 Pixeln fest codiert. Dies ist der Radius, der die Verzögerung verursacht, die Sie sehen.

    
mtweber 05.09.2011, 04:02
quelle

Tags und Links