Цель лабораторной работы:
разработать простейшие приложения для демонстрации распознавания стандартных жестов.
Задачи лабораторной работы:
Для работы со стандартными жестами Android предоставляет класс GestureDetector. Этот класс содержит два вложенных интерфейса-слушателя: OnGestureListener и OnDoubleTapListener, эти интерфейсы задают методы, отслеживающие стандартные жесты. А также GestureDetector содержит вложенный класс SimpleOnGestureListener, который содержит пустые реализации, возвращающие значение false, где это необходимо, всех методов интерфейсов: OnGestureListener и OnDoubleTapListener.
В лабораторной работе рассмотрим две возможности распознавания жестов:
Разработаем приложение, в котором продемонстрируем распознавание всех поддерживаемых жестов. Приложение содержит одну активность, одно информационное поле для вывода информации о распознанном жесте. Приложение работает следующим образом: пользователь выполняет один из поддерживаемых сенсорных жестов, в информационном поле отображается информация о распознанном жесте.
implements GestureDetector.OnGestureListener, GestureDetector.OnDoubleTapListener
GestureDetectorCompat mDetector;
В методе onCreate() класса активности, создадим экземпляр класса GestureDetectorCompat и присвоим его переменной mDetector:
mDetector = new GestureDetectorCompat(this,this);
одним из параметров конструктора является класс, который реализует интерфейс GestureDetector.OnGestureListener, в нашем случае использовано слово this, т. е. параметром является сам класс активности. Этот интерфейс уведомляет пользователей когда появляется определенное сенсорное событие.
В методе OnCreate() класса активности, следующая строка:
mDetector.setOnDoubleTapListener(this);
устанавливает слушатель событий, связанных с двойным касанием, это должен быть класс, реализующий интерфейс GestureDetector.OnDoubleTapListener. В нашем случае использовано слово this, т.е. слушателем будет опять сам класс активности.
public boolean onTouchEvent(MotionEvent event){ this.mDetector.onTouchEvent(event); // Be sure to call the superclass implementation return super.onTouchEvent(event); }
Методы интерфейса GestureDetector.OnGestureListener:
onDown() | - отслеживает появление касания, т. е. палец прижат к экрану; |
onFling() | - отслеживает появление жеста смахивания; |
onLongPress() | - отслеживает удерживание пальца прижатым к экрану длительное время; |
onScroll() | - отслеживает появление жеста прокрутки (пролистывания); |
onShowPress() | - отслеживает, что произошло событие касания и больше никаких событий не происходит короткое время; |
onSingleTapUp() | - отслеживает появление жеста одиночного нажатия (клик). |
Методы интерфейса GestureDetector.OnDoubleTapListener:
onDoubleTap() | - отслеживает появление жеста двойного нажатия ("двойной клик"); |
onDoubleTapEvent() | - отслеживает появление события во время выполнения жеста двойного нажатия, включая касание, перемещение, подъем пальца. |
onSingleTapConfirmed() | - отслеживает появление жеста одиночного нажатия (клик). |
В листинге 10.1 представлен код приложения, в котором распознаются все поддерживаемые жесты, информация о появившемся и распознанном жесте выдается в информационное поле (TextView).
В качестве практики предлагается воспроизвести данное приложение и проверить, как система распознает тот или иной жест. Очень полезно для понимания, как выполняются основные жесты.