SimpleOnGestureListener onFling Скорость направления вопроса
Я реализовал SimpleOnGestureListener в этом приложении для Android, и это базовая реализация, и все работает как надо:
класс реализует OnTouchListener
и я установил его как TouchListener для правильного просмотра, в событии касания я вызываю свой экземпляр SimpleOnGestureListener
@Override
public boolean onTouch(View v, MotionEvent event) {
return gestureDetector.onTouchEvent(event);
}
и в моем обратном вызове fling я записываю скорость Y (приложение использует какой-то жест с прокруткой вниз)
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY){
Log.d(TAG, "velocityY = " + velocityY);
... some code ...
}
метод вызывается, и я вижу значения в моем журнале.
Проблема в том, что для Nexus 4 и Nexus 10 для нисходящего броска скорость Y является положительным значением, а для Nexus 7 - отрицательным.
Я знаю, кто-то предложит использовать e2.getY - e1.getY
(или необработанные), но они не совсем надежны, потому что глупые пользователи могут (и будут) перетаскивать представление вниз, а затем подбрасывать его вверх, но разница все равно будет положительной.
Итак, вопрос: есть ли способ запросить систему, каково направление этой вещи?
1 ответ
Итак, я выяснил причину проблемы и вскоре опубликую новый вопрос, который мог бы обойти ее.
Проблема в том, что я использую onScroll() для перемещения представления вверх и вниз по экрану, используя View.offsetTopAndBottom, и с этим изменением положения VelocityTracker становится совершенно сумасшедшим
Я изучу еще кое-что, чтобы посмотреть, смогу ли я попробовать VT или использовать свой собственный обходной путь, но да, вот почему!