Задержка прокрутки с помощью GestureDetector onScroll - PullRequest
8 голосов
/ 18 августа 2011

Я использую GestureDetector для реализации прокрутки внутри пользовательского View. Моя реализация основана на этом: Плавная прокрутка с инерцией и сопротивлением края / мгновенный возврат

Я заметил небольшую паузу перед началом прокрутки: я проверил сообщения onScroll и заметил, что первое приходит только после большего движения пальца, что вызывает заметную задержку в начале прокрутки. После этого прокрутка плавная.

Кажется, GestureDetector начинает отправлять onScroll сообщения только после минимального расстояния между событиями, чтобы убедиться, что жест не является длинным тапом или касанием (кстати, я установил setIsLongpressEnabled(false)).

Есть ли способ изменить это поведение и создать плавную прокрутку, не применяя пользовательский жест прокрутки с использованием низкоуровневых событий касания?

1 Ответ

10 голосов
/ 05 сентября 2011

Ответ - нет, вам нужно создать свой собственный GestureDetector.Если вы посмотрите на исходный код Android ( GestureDetector.java ), то строки с 524 по 540 используются для обнаружения "касания" для одного касания.В частности, линия 528 предотвращает вызов события onScroll до тех пор, пока движение не выйдет за пределы сенсорного отвала (который извлекается из конфигурации вида).Вы не можете изменить конфигурацию вида, и наложение жестко закодировано в 16 пикселей.Это радиус, который вызывает задержку, которую вы видите.

...