Сеилханова Р. Б


Распознавание всех поддерживаемых жестов



бет106/112
Дата07.01.2022
өлшемі11,65 Mb.
#17516
түріПрограмма дисциплины
1   ...   102   103   104   105   106   107   108   109   ...   112

10.2 Распознавание всех поддерживаемых жестов


Разработаем приложение, в котором продемонстрируем распознавание всех поддерживаемых жестов. Приложение содержит одну активность, одно информационное поле для вывода информации о распознанном жесте. Приложение работает следующим образом: пользователь выполняет один из поддерживаемых сенсорных жестов, в информационном поле отображается информация о распознанном жесте.

  1. Создадим простое приложение и добавим на форму TextView для вывода информации.

  2. Настроим логику приложения. В java класс, соответствующий активности внесем следующие дополнения.

    • Класс активности должен реализовывать интерфейсы: GestureDetector.OnGestureListener и GestureDetector.OnDoubleTapListener, для этого в объявление класса добавим конструкцию:

    • implements GestureDetector.OnGestureListener,

    • GestureDetector.OnDoubleTapListener



    • Нам понадобится экземпляр класса GestureDetectorCompat поэтому в качестве поля класса активности объявим следующую переменную:

    • GestureDetectorCompat mDetector;

В методе onCreate() класса активности, создадим экземпляр класса GestureDetectorCompat и присвоим его переменной mDetector:

mDetector = new GestureDetectorCompat(this,this);

одним из параметров конструктора является класс, который реализует интерфейс GestureDetector.OnGestureListener, в нашем случае использовано слово this, т. е. параметром является сам класс активности. Этот интерфейс уведомляет пользователей когда появляется определенное сенсорное событие.

В методе OnCreate() класса активности, следующая строка:

mDetector.setOnDoubleTapListener(this);



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

  1. Чтобы позволить вашему объекту GestureDetector получать события, необходимо переопределить метод onTouchEvent() для активности или элемента GUI. И передавать в экземпляр детектора все обнаруженные события.

  2. public boolean onTouchEvent(MotionEvent event){

  3. this.mDetector.onTouchEvent(event);

  4. // Be sure to call the superclass implementation

  5. return super.onTouchEvent(event);

  6. }



  1. После проведенной подготовки пришло время реализовать все методы, объявленные в интерфейсах, отвечающих за прослушивание сенсорных событий.

Методы интерфейса GestureDetector.OnGestureListener:

onDown()

- отслеживает появление касания, т. е. палец прижат к экрану;

onFling()

- отслеживает появление жеста смахивания;

onLongPress()

- отслеживает удерживание пальца прижатым к экрану длительное время;

onScroll()

- отслеживает появление жеста прокрутки (пролистывания);

onShowPress()

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

onSingleTapUp()

- отслеживает появление жеста одиночного нажатия (клик).

Методы интерфейса GestureDetector.OnDoubleTapListener:

onDoubleTap()

- отслеживает появление жеста двойного нажатия ("двойной клик");

onDoubleTapEvent()

- отслеживает появление события во время выполнения жеста двойного нажатия, включая касание, перемещение, подъем пальца.

onSingleTapConfirmed()

- отслеживает появление жеста одиночного нажатия (клик).

В листинге 10.1 представлен код приложения, в котором распознаются все поддерживаемые жесты, информация о появившемся и распознанном жесте выдается в информационное поле (TextView).

В качестве практики предлагается воспроизвести данное приложение и проверить, как система распознает тот или иной жест. Очень полезно для понимания, как выполняются основные жесты.




Достарыңызбен бөлісу:
1   ...   102   103   104   105   106   107   108   109   ...   112




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет