Android-пейджер не срабатывает неправильно

Я нашел интересную ошибку в андроиде view-pager (r4 ACL).

Трекер скорости будет неправильно отображать пейджер в режиме просмотра, если прокрутка пальца слишком быстро / выключена с краю экрана на более старых или медленных устройствах.

Я могу воспроизвести оригинальную Galaxy Tab, HTC Desire, Nexus One, San Francisco, HTC Hero.

Откройте Google +, рынок или что-то с реалистичной реализацией пейджера подстановочного представления.

Если вы переходите на крайнюю левую страницу, затем осторожно потяните палец по правому краю экрана, вы можете заставить пейджер-просмотр прыгать вправо (противоположный путь в направлении перетаскивания) .

Мне нужно больше исследовать, но похоже, что трекер скорости не может идти в ногу с более медленными устройствами. Это может, конечно, сделать просмотр пейджера, когда он быстро прокручивается влево-вправо. Попробуйте на новом рынке (3.3+) перейти от одной стороны к другой и увидеть неприятные результаты!

Любые идеи по исправлениям, расширяя класс. Im думает, что экран может давать нечетные результаты, когда происходит много, а может и отсутствовать некоторые MotionEvents, поскольку мне было почти невозможно воспроизвести новые устройства. (Nexus S, Samsung GSII, Sensation).

EDIT: эта проблема решена с ACL v6

Спасибо, Крис

Я думаю, что версия ViewPager, которая вышла с r4, имела некоторые проблемы вроде этого, которые с тех пор были исправлены. Следующий релиз должен скоро появиться. Это поведение, которое мы, скорее всего, со временем уточним в дополнение к предстоящим исправлениям.

Если вам интересно и хотите отредактировать исходный код, включенный в пакет поддержки, я считаю, что исправление заключалось в том, чтобы начать передачу MotionEvents в VelocityTracker во время onInterceptTouchEvent из начального события down, а не только после того, как перехват произошел в onTouchEvent. Это дает VelocityTracker больше данных для работы. В качестве альтернативы вы можете экспериментировать с другими триггерами.