この Android アプリに SimpleOnGestureListener を実装しました。これは基本的な実装であり、すべて正常に動作しています。
クラスが実装さOnTouchListener
れ、正しいビューの TouchListener として設定し、タッチ イベントで SimpleOnGestureListener のインスタンスを呼び出します。
@Override
public boolean onTouch(View v, MotionEvent event) {
return gestureDetector.onTouchEvent(event);
}
そして、fling コールバックで、velocityY をログに記録しています (アプリはスワイプダウン ジェスチャを使用しています)。
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY){
Log.d(TAG, "velocityY = " + velocityY);
... some code ...
}
メソッドが呼び出され、ログに値が表示されます。
問題は、Nexus 4 と Nexus 10 では下向きのフリングの場合、velocityY が正の値であり、Nexus 7 では負の値であることです。
誰かがe2.getY - e1.getY
(または生の)使用を提案することは知っていますが、愚かなユーザーはビューを下にドラッグしてから上に投げる可能性があるため(そして実際にそうするでしょう)、完全に信頼できるわけではありませんが、違いはまだ肯定的です.
問題は、システムにこのことの方向性を問い合わせる方法はあるのかということです。