Отключить и включить жесты

У меня такой вопрос: можно ли отключить жесты, но при этом оставить активным только касание? Иными словами, как мне просто игнорировать жесты?


Ответы (1 шт):

Автор решения: Mixadyt

Для игнорирования жестов на Android в Java можно использовать GestureDetector, который обрабатывает все жесты и предоставляет инструменты для определения, игнорирования или обработки нужных жестов.

Вот пример, показывающий, как игнорировать все жесты на экране:

Java

import android.app.Activity;
import android.os.Bundle;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.GestureDetector.OnGestureListener;
import android.view.GestureDetector.SimpleOnGestureListener;
import android.widget.Toast;

public class MainActivity extends Activity {

    private GestureDetector gestureDetector;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // Создаем объект GestureDetector
        gestureDetector = new GestureDetector(this, new MyGestureListener());
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        // Передаем события касания в GestureDetector для обработки жестов
        gestureDetector.onTouchEvent(event);
        return super.onTouchEvent(event);
    }

    private class MyGestureListener extends SimpleOnGestureListener {

        @Override
        public boolean onDown(MotionEvent event) {
            // Вернуть true, чтобы игнорировать жесты
            return true;
        }

        // Дополнительные методы, которые можно переопределить

        @Override
        public void onLongPress(MotionEvent event) {
            // Обработка долгого нажатия
            Toast.makeText(MainActivity.this, "Долгое нажатие", Toast.LENGTH_SHORT).show();
        }

        @Override
        public boolean onFling(MotionEvent event1, MotionEvent event2, float velocityX, float velocityY) {
            // Обработка свайпа
            Toast.makeText(MainActivity.this, "Свайп", Toast.LENGTH_SHORT).show();
            return true;
        }

        // Можно добавить другие методы, такие как onSingleTapUp(), onDoubleTap() и т. д.
    }
}

В данном примере класс MainActivity расширяет Activity и переопределяет метод onTouchEvent(), чтобы передать события касания в GestureDetector для обработки. Затем создается класс MyGestureListener, который наследуется от SimpleOnGestureListener и переопределяет методы обработки жестов, такие как onDown(), onLongPress() и onFling(). В методе onDown() возвращается true, чтобы игнорировать все жесты.

В итоге, все жесты на экране будут игнорироваться, но вы можете настроить MyGestureListener и добавить другие методы для обработки нужных жестов.

→ Ссылка