4

既存のAPIを使用してAndroidでタッチイベントの速度、速度、または加速度を取得することは可能ですか?MotionEventクラスを実行しましたが、そのクラスのどのフィールドも必要な情報を取得していないようです。どんな助けでも大歓迎です

4

2 に答える 2

14

この場合、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();

うまくいくことを願っています。

于 2012-11-06T16:25:59.900 に答える
0

を使用して、2 つのイベント間の速度を手動で計算する必要がありますSystem.nanoTime。加速度についても同じ方法です (ただし、今回は座標の代わりに速度を使用します)。

于 2012-04-14T19:59:09.603 に答える