VelocityTrackerを利用したAndroidの基礎

VelocityTrackerはAndroid内でタッチ操作における速度を追跡するためのツールです。タッチ操作における速度や加速度を計測することで、スワイプやドラッグなどのジェスチャー操作を実装する際に利用されます。

VelocityTrackerを利用する際は、下記手順で行います。

  1. 创建VelocityTracker对象:可以使用VelocityTracker.obtain()方法获取VelocityTracker对象。
  2. タッチイベントのonTouchEvent()メソッドで、VelocityTrackerオブジェクトを使用してタッチイベントの速度を追跡
  1. ACTION_DOWN イベントでは、addMovement() メソッドを使用して、タッチイベントを VelocityTracker に追加します。
  2. ACTION_MOVE イベント時には、タッチイベントを VelocityTracker に追加するために addMovement() メソッドを使用する。
  3. ACTION_UPイベントでは、addMovement()メソッドを使用してVelocityTrackerにタッチイベントを追加する。
  1. computeCurrentVelocity()
  1. getXVelocity()とgetYVelocity()メソッドを使用すれば、X軸とY軸の速度を取得できます。
  1. 速度トラッカーをクリアする

タッチイベントの速度を追跡する方法をVelocityTrackerを使用して実装したサンプルコードを以下に示します。

public class MainActivity extends AppCompatActivity {
private VelocityTracker mVelocityTracker;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
int action = event.getActionMasked();
switch (action) {
case MotionEvent.ACTION_DOWN:
// 创建VelocityTracker对象
mVelocityTracker = VelocityTracker.obtain();
break;
case MotionEvent.ACTION_MOVE:
// 将触摸事件添加到VelocityTracker中
mVelocityTracker.addMovement(event);
break;
case MotionEvent.ACTION_UP:
// 将触摸事件添加到VelocityTracker中
mVelocityTracker.addMovement(event);
// 计算当前的速度
mVelocityTracker.computeCurrentVelocity(1000);
// 获取X轴和Y轴方向的速度
float xVelocity = mVelocityTracker.getXVelocity();
float yVelocity = mVelocityTracker.getYVelocity();
Log.d("Velocity", "X velocity: " + xVelocity);
Log.d("Velocity", "Y velocity: " + yVelocity);
// 释放VelocityTracker对象
mVelocityTracker.clear();
mVelocityTracker.recycle();
break;
}
return super.onTouchEvent(event);
}
}

上に書いたコードでは、ACTION_DOWNイベントでVelocityTrackerを作成し、ACTION_MOVEイベントとACTION_UPイベントでタッチイベントをVelocityTrackerに追加し、ACTION_UPイベントで現在の速度を計算しx,y軸速度を取得した後、ACTION_UPイベントでVelocityTrackerを破棄している。

ご留意ください:

  1. VelocityTracker の使用後は clear() メソッドで初期状態に戻し、recycle() メソッドでリサイクルすることで再利用できるようにする必要があります。
  2. VelocityTrackerは1つのタッチイベントシーケンスを追跡するためだけに使用できます。複数のタッチイベントシーケンスを追跡する必要がある場合は、各イベントシーケンスごとに新しいVelocityTrackerオブジェクトを作成する必要があります。
bannerAds