4

この 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(または生の)使用を提案することは知っていますが、愚かなユーザーはビューを下にドラッグしてから上に投げる可能性があるため(そして実際にそうするでしょう)、完全に信頼できるわけではありませんが、違いはまだ肯定的です.

問題は、システムにこのことの方向性を問い合わせる方法はあるのかということです。

4

1 に答える 1

1

そのため、問題の原因を突き止め、回避策となる可能性のある新しい質問をすぐに投稿します。

問題は、私が onScroll() を使用して View.offsetTopAndBottom を使用して画面上でビューを上下に移動していることです。その位置の変更により、VelocityTracker は完全に狂っています。

VT を試すことができるかどうか、または独自の回避策を実行できるかどうかを確認するために、もう少し勉強しますが、そうです。

于 2013-09-20T12:23:39.217 に答える