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