2

android.view.GestureDetector.OnGestureListenerのonFling()とonScroll()のイベントの違いは何ですか? リンクテキスト

4

4 に答える 4

10

onScroll()は、ユーザーが画面上に指を置き、指を持ち上げずに画面上でスライドさせた後に発生します。onFling()は、ユーザーがスクロールしてから指を離した場合に発生します。フリングは、モーションが十分に速かった場合にのみトリガーされます。

于 2010-06-21T06:02:38.707 に答える
3

実際、onFlingは、動きが発生した速度とは何の関係もありません。速度(またはMotionEventパラメーターを介した距離)が目的に十分であったかどうかを判断するのは、velocityXおよびvelocityYパラメーターを介したユーザーです。

onScrollは、ユーザーが指を動かしているときに常に呼び出されますが、onFlingは、ユーザーが指を離した後にのみ呼び出されます。

于 2012-02-04T02:08:05.430 に答える
2

メソッドframework/base/core/java/android/view/GestureDetector.javaで、のコードを確認できます。およびまたはの場合に呼び出されます。の場合に呼び出されます。onTouchEvent()onFling()MotionEvent.ACTION_UPvelocityY > mMinimumFlingVelocityvelocityX > mMinimumFlingVelocityonScroll()MotionEvent.ACTION_MOVE

于 2012-08-21T01:53:33.780 に答える
1

onFling()が発生した後、2つを区別できます。まず、onDown()で、画像の現在の座標をクラス変数として保存します。onScroll()は期待どおりに機能しますが、onFling()がこれがフリングイベントであると判断した場合は、onDown()に保存されていた元の座標を復元するだけです。これは非常にうまく機能することがわかりました。

   @Override
  public boolean onDown(MotionEvent e) {
  // remember current coordinates in case this turns out to be a fling
  mdX = imageView.dX;
  mdY = imageView.dY;
  return false;

}

于 2011-04-08T21:28:37.607 に答える