Как определить направление движения в галерее Android? - PullRequest
2 голосов
/ 15 ноября 2011

Я создавал производную Gallery, которая использует ограниченное число View с, и поэтому Adapter должен иметь возможность заполнять эти View с опережением времени во время прокрутки или интрижка. Для этого мне нужно получить направление движения из событий onFling(...) и onScroll(...).

Как я могу использовать параметр distanceX в onScroll(...) и параметр velocityX в onFling(...), чтобы определить, в каком направлении движется Gallery, и, следовательно, какой View подготовить следующим?

1 Ответ

3 голосов
/ 24 ноября 2011

Знаки параметров скорости в 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 довольно хорошим значением - он все еще кажется интуитивно понятным для прокрутки, но броски менее жестоки.

...