VelocityTrackerの使い方
VelocityTrackerはタッチイベントの速度を計算するユーティリティクラスです。それによりタッチイベントの速度を追跡し、速度の値を取得するためのメソッドをいくつか提供できます。
VelocityTracker の一般的な手順は次のとおりです。
- 创建VelocityTracker对象:可以通过调用VelocityTracker.obtain()来获取一个新的VelocityTracker对象。
- タッチイベントの onTouchEvent() メソッド内では速度を追跡するために VelocityTracker を使用します。通常、ACTION_DOWN イベントでは clear() メソッドを呼び出して VelocityTracker の状態をリセットし、その後 ACTION_MOVE イベントでは addMovement() メソッドを呼び出して移動イベントを追加します。サンプルコードを以下に示します。
VelocityTracker velocityTracker = VelocityTracker.obtain();
...
@Override
public boolean onTouchEvent(MotionEvent event) {
int action = event.getActionMasked();
switch (action) {
case MotionEvent.ACTION_DOWN:
// 清除之前的速度数据
velocityTracker.clear();
break;
case MotionEvent.ACTION_MOVE:
// 添加移动事件
velocityTracker.addMovement(event);
break;
case MotionEvent.ACTION_UP:
// 计算速度
velocityTracker.computeCurrentVelocity(1000); // 单位为像素/秒
// 获取水平和垂直方向的速度
float velocityX = velocityTracker.getXVelocity();
float velocityY = velocityTracker.getYVelocity();
// 使用速度值进行相应的处理
...
break;
}
return true;
}
- VelocityTracker.recycle()
computeCurrentVelocity()メソッドのパラメータは時間の単位を表しており、通常はミリ秒を使います。この値は必要に応じて調整します。それから、VelocityTrackerは1つのタッチイベントストリームにおいてのみ速度の追跡をおこなえるため、複数の指の速度を追跡したい場合、指ごとに別個のVelocityTrackerオブジェクトを作成します。