4

是否可以使用现有的 api 在 android 中获取触摸事件的速度或速度或加速度?我已经完成了 MotionEvent 类,并且该类中的所有字段似乎都没有检索到我需要的信息。任何帮助将不胜感激

4

2 回答 2

14

在这种情况下,MotionEvent 对您没有帮助。您可以使用 VelocityTracker 类。它获取 MotionEvent 实例并计算最近触摸事件的速度。您可以在此处查看其文档:http: //developer.android.com/reference/android/view/VelocityTracker.html

首先,您必须通过 gain() 方法获取一个实例:

VelocityTracker velocity = VelocityTracker.obtain();

然后您可以将 ACTION_MOVE 事件添加到其队列中:

    if(event.getAction() == MotionEvent.ACTION_MOVE)
    {
        velocity.addMovement(event);
    }

然后您可以计算速度并提取 x_velocity 和 y_velocity

velocity.computeCurrentVelocity(1000);
float x_velocity = velocity.getXVelocity();
float y_velocity = velocity.getYVelocity();

我希望这个对你有用。

于 2012-11-06T16:25:59.900 回答
0

您需要使用 手动计算每两个事件之间的速度System.nanoTime。加速度的方式相同(但这次使用速度而不是坐标)。

于 2012-04-14T19:59:09.603 回答