Знаки параметров скорости в onFling(...)
и параметров расстояния в onScroll(...)
противоположны.Чтобы правильно определить, в каком направлении движется Gallery
, код должен быть следующим:
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
//if distanceX is POSITIVE, the Views are travelling left
//therefore the selection position is INCREASING
return super.onScroll(e1, e2, distanceX*mVelocityFactor, distanceY*mVelocityFactor);
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
//if velocityX is NEGATIVE, the Views are travelling left
//therefore the selection position is DECREASING
return super.onFling(e1, e1, velocityX*mVelocityFactor, velocityY*mVelocityFactor);
}
Кстати, mVelocityFactor
- это просто константа, которую я ввел, чтобы сделать прокрутку / бросаниенемного менее энергичным.Я нашел 0,6 довольно хорошим значением - он все еще кажется интуитивно понятным для прокрутки, но броски менее жестоки.