AndroidでVelocityTrackerを使用する方法
Velocityトラッカーとは、Androidでタッチ操作の速度を追跡するためのクラスです。Velocityトラッカーを使用してタッチイベントの速度を追跡する手順は次のとおりです。
- タッチ
VelocityTracker velocityTracker = VelocityTracker.obtain();
- 動作を移動中
- addMovement()を追加
velocityTracker.addMovement(event);
- アクション終了
- キャンセル
- computeCurrentVelocity()
velocityTracker.computeCurrentVelocity(1000); // 1000表示每秒像素数
- getXVelocity()
- y速度を取得する
float xVelocity = velocityTracker.getXVelocity();
float yVelocity = velocityTracker.getYVelocity();
- 削除します
velocityTracker.clear();
velocityTracker.recycle();
新たな touch イベントシーケンスのたびに obtain() メソッドを呼び出して新しい VelocityTracker オブジェクトを取得する必要があります。
次に完全な例を示します。
public class MainActivity extends AppCompatActivity {
private VelocityTracker velocityTracker;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 获取布局中的View
View view = findViewById(R.id.view);
// 添加触摸事件监听器
view.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
// 创建VelocityTracker对象
velocityTracker = VelocityTracker.obtain();
break;
case MotionEvent.ACTION_MOVE:
// 将事件添加到VelocityTracker中
velocityTracker.addMovement(event);
break;
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_CANCEL:
// 计算当前速度
velocityTracker.computeCurrentVelocity(1000);
// 获取X轴和Y轴上的速度
float xVelocity = velocityTracker.getXVelocity();
float yVelocity = velocityTracker.getYVelocity();
// 处理速度
// ...
// 清除VelocityTracker对象
velocityTracker.clear();
velocityTracker.recycle();
break;
}
return true;
}
});
}
}