Как поймать жесты и распознать количество пальцев, касающихся экрана?

Пишу приложение с использованием openGL ES2, в котором нужно вращать фигуру вокруг своей оси, а так же масштабировать её. Как распознать, когда происходит касание одним пальцем, а когда двумя?
Пока имеется такой код:
private float mPreviousX;
    private float mPreviousY;
    private float mDensity;

    @Override
    public boolean onTouchEvent(MotionEvent event)
    {
        if (event != null)
        {
            float x = event.getX();
            float y = event.getY();

            if (event.getAction() == MotionEvent.ACTION_MOVE)
            {
                if (mRenderer != null)
                {
                    float deltaX = (x - mPreviousX) / mDensity / 2f;
                    float deltaY = (y - mPreviousY) / mDensity / 2f;
                    mRenderer.mDeltaX += deltaX;
                    mRenderer.mDeltaY += deltaY;
                    //Log.i("System.out", String.valueOf(mRenderer.mDeltaY));
                }
            }

            mPreviousX = x;
            mPreviousY = y;

            mScaleDetector.onTouchEvent(event);

            return true;
        }
        else
        {
            return super.onTouchEvent(event);
        }
    }
  • Вопрос задан
  • 214 просмотров
Решения вопроса 1
GavriKos
@GavriKos
Лучше стандартными гестурами (https://developer.android.com/training/gestures/in...). В опенГл приложениях они тоже работают.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
private int mActivePointerId;
 
public boolean onTouchEvent(MotionEvent event) {
    ....
    // Get the pointer ID
    mActivePointerId = event.getPointerId(0);

    // ... Many touch events later...

    // Use the pointer ID to find the index of the active pointer 
    // and fetch its position
    int pointerIndex = event.findPointerIndex(mActivePointerId);
    // Get the pointer's current position
    float x = event.getX(pointerIndex);
    float y = event.getY(pointerIndex);
}

Подробнее тут
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы