【问题标题】:speed or acceleration of motion event android运动事件android的速度或加速度
【发布时间】:2012-04-14 17:51:22
【问题描述】:

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

【问题讨论】:

标签: android performance touch velocity acceleration


【解决方案1】:

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

首先你必须通过 get() 方法获取一个实例:

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();

我希望它对你有用。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2021-07-19
      • 1970-01-01
      • 2011-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多