2011-08-18 15 views
8

Utilizo GestureDetector para implementar el desplazamiento dentro de un View personalizado. Mi aplicación se basa en esto: Smooth scrolling with inertia and edge resistance/snapbackDesplazamiento de desplazamiento con GestureDetector onScroll

me di cuenta de una breve pausa antes de que comience el desplazamiento: He examinado los onScroll mensajes y se dio cuenta de que el primero llega sólo después de un movimiento más amplio de un dedo, lo que provoca retraso notable en el inicio del desplazamiento Después de eso, el desplazamiento es suave.

Parece GestureDetector inicia el envío de mensajes onScroll sólo después de una distancia mínima entre los motionevents para asegurarse de que el gesto no es un longtap o toque (por cierto me puse setIsLongpressEnabled(false)).

¿Hay alguna manera de cambiar este comportamiento y crear un desplazamiento suave sin implementar un gesto de desplazamiento personalizado utilizando eventos táctiles de bajo nivel?

Respuesta

10

La respuesta es no, usted debe crear su propio GestureDetector. Si nos fijamos en el código fuente de Android (GestureDetector.java), las líneas 524 a 540 se utilizan para detectar el "deslastre táctil" en un solo toque. Específicamente, la línea 528 evita que se convoque el evento onScroll hasta que el movimiento se encuentre fuera de la pendiente táctil (que se extrae de la configuración de visualización). No puede cambiar la configuración de la vista y el slop está codificado en 16 píxeles. Este es el radio que causa el retraso que está viendo.

Cuestiones relacionadas