android.view.GestureDetector.OnGestureListener onFling () против onScroll () - PullRequest
2 голосов
/ 21 июня 2010

В чем разница событий onFling () и onScroll () для android.view.GestureDetector.OnGestureListener? текст ссылки

Ответы [ 4 ]

10 голосов
/ 21 июня 2010

onScroll () происходит после того, как пользователь положил палец на экран и провел пальцем по экрану, не поднимая его. onFling () происходит, если пользователь прокручивает, а затем поднимает палец. Бросок срабатывает, только если движение было достаточно быстрым.

3 голосов
/ 04 февраля 2012

На самом деле onFling не имеет никакого отношения к скорости, с которой произошло движение.Именно пользователь с помощью параметров speedX и speedY определяет, достаточно ли скорости (или расстояния через параметры MotionEvent) для своих целей.

OnScroll постоянно вызывается, когда пользователь перемещает палецгде, поскольку onFling вызывается только после того, как пользователь поднял палец.

2 голосов
/ 21 августа 2012

Вы можете увидеть код framework/base/core/java/android/view/GestureDetector.java в методе onTouchEvent(). onFling() вызывается в случае MotionEvent.ACTION_UP и velocityY > mMinimumFlingVelocity или velocityX > mMinimumFlingVelocity. onScroll() вызывается в случае MotionEvent.ACTION_MOVE.

1 голос
/ 09 апреля 2011

Вы можете различать эти два после того, как происходит onFling (). Сначала в onDown () сохраняем текущие координаты изображения как переменные класса. OnScroll () будет работать как положено, но если onFling () определит, что это событие сброса, просто восстановите исходные координаты, которые были сохранены в onDown (). Я нашел, что это работает очень хорошо.

   @Override
  public boolean onDown(MotionEvent e) {
  // remember current coordinates in case this turns out to be a fling
  mdX = imageView.dX;
  mdY = imageView.dY;
  return false;

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...