Вы вызываете метод, который выполняет некоторые математические операции на основе сохраненных значений местоположения и пальца, который все еще находится на экране. Математика должна быть довольно простой, но я не знаю, что ты на самом деле хочешь делать.

му я разрабатываю приложение, которое должно обрабатывать мультитач. В принципе, я хочу одно касание для поворота (это не проблема). И мультитач для прокрутки.

У меня есть основной код, но у меня возникают проблемы, когда происходит переход от одиночного к мультитач и наоборот. В основном движение будет толчковым, потому что среднее положение мультитача (два пальца) и абсолютное положение одного пальца находятся на расстоянии. Поэтому, если у меня два пальца на экране, они занимают срединное положение, а затем поднимают один палец, это будет похоже на быстрое перемещение из этого срединного положения в абсолютное положение одного пальца. Это будет движение, которое я не хочу.

Это мой код:

@Override
public boolean onTouchEvent( MotionEvent event ) {
    float xEvent[] = new float[ 2 ];
    float yEvent[] = new float[ 2 ];
    switch( event.getPointerCount() ) {
        case 1:
            xEvent[ 0 ] = event.getX( 0 );
            yEvent[ 0 ] = event.getY( 0 );
            switch( event.getAction() ) {
                case MotionEvent.ACTION_DOWN:
                    camera.onTouchDown( xEvent[ 0 ], yEvent[ 0 ] );
                    return true;
                case MotionEvent.ACTION_MOVE:
                    camera.onTouchRotate( xEvent[ 0 ], yEvent[ 0 ] );
                    return true;
                default: return super.onTouchEvent( event );
            }
        case 2:
            xEvent[ 0 ] = event.getX( 0 );
            yEvent[ 0 ] = event.getY( 0 );
            xEvent[ 1 ] = event.getX( 1 );
            yEvent[ 1 ] = event.getY( 1 );
            switch( event.getAction() ) {
                case MotionEvent.ACTION_DOWN:
                    camera.onTouchDown( ( ( xEvent[ 0 ] + xEvent[ 1 ] ) / 2 ), ( ( yEvent[ 0 ] + yEvent[ 1 ] ) / 2 ) );
                    return true;
                case MotionEvent.ACTION_MOVE:
                    camera.onTouchSlide( ( ( xEvent[ 0 ] + xEvent[ 1 ] ) / 2 ), ( ( yEvent[ 0 ] + yEvent[ 1 ] ) / 2 ) );
                    return true;
                case MotionEvent.ACTION_POINTER_1_UP:
                    camera.onTouchDown( xEvent[ 1 ], yEvent[ 1 ] );
                    return true;
                case MotionEvent.ACTION_POINTER_2_UP:
                    camera.onTouchDown( xEvent[ 0 ], yEvent[ 0 ] );
                    return true;
                default: return super.onTouchEvent( event );
            }
        default: return false;
    }
}

Функция onTouchDown камеры просто устанавливает первое значение касания. Вот почему я также использую его в движении вверх, чтобы установить новое начальное значение для движения одним касанием, когда оно идет от мультитача.

Я надеюсь, что кто-то знает, в чем моя проблема, и может помочь мне в дальнейшем.

Ответы на вопрос(2)

Ваш ответ на вопрос