OnTouch
Все жесты действительно обрабатываются одним событием в Деятельности. OnTouch вызывается каждый раз, когда на экране происходит прикосновение к представлению. Он предоставляет всю информацию, необходимую для создания довольно интересных жестов. Android предоставляет несколько простых классов, которые позволяют вам быстро добавлять некоторые жесты в ваше приложение, не вдаваясь в детали жестов. Когда OnTouch срабатывает, вы получаете MotionEvent и ссылку на представление, которое было затронуто.
Объяснение события движения
Событие движения — это то, что ОС Android возвращает каждый раз при касании экрана в обратном вызове OnTouch. Объект MotionEvent содержит информацию о том, сколько пальцев касается экрана, и о скорости движения пальца. В нем есть все детали, необходимые для обработки любого вида жестов. Android также идет дальше.
Android предоставляет несколько хороших классов для базового распознавания жестов, таких как перетаскивание одним пальцем. Они предоставляют разработчику простой способ реализовать несколько жестов, не пачкая рук с помощью SimpleOnGestureListener .
Как использовать OnGestureListener
Использовать OnGestureListener очень просто. В своей деятельности подключите свой OnTouch Listener к основному виду своей деятельности (если вы хотите, чтобы жесты были на полном экране).
1
2
3
4
5
6
7
|
rootLayout.setOnTouchListener( new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { yourGestureListener.onTouchEvent(event); return false ; } }); |
Теперь все сенсорные события на корневом уровне будут обрабатываться вашим SimpleOnGestureListener. Осталось только реализовать то, что делает ваш Gesture Listener для определенных сенсорных событий. Просто переопределяя нужные вам методы, вы можете реализовать функцию жестов, не определяя, какой тип жеста сделал пользователь. Например, вы можете переопределить метод OnScroll в SimpleOnGestureListener, чтобы реализовать собственную функцию прокрутки в представлении .
Почему Simple GestureDetector не так хорош
Simple GestureDetector отлично подходит для любого жеста, который требует только некоторых базовых жестов. Однако для любого жеста, требующего двух (или более) касаний, вам не повезло. Если вы действительно хотите попасть в гущу жестов, вам действительно нужно заглянуть в объект Motion Event чуть дальше.
Создание более сложных жестов
Давайте пойдем в другом направлении от приведенного выше примера. Допустим, вместо того, чтобы просто вызывать Gesture Listener в нашем обратном вызове OnTouch, давайте посмотрим на объект Motion Event немного подробнее.
Каждое событие движения, которое мы получаем, имеет свое собственное действие, такое как ВНИЗ , когда палец был нажат на виде, или ДВИЖЕНИЕ , когда палец перемещался из одного положения в двухмерной плоскости в другое. Событие Motion также имеет действие, которое очень полезно для обработки мультитач-жестов, называемое POINTER_DOWN , которое используется, когда на вид помещается второе касание.
Используя эти действия, можно создавать сложные жесты. Например, жест жесткости (обычно используемый для увеличения карты) может работать так:
1. Получено ВНИЗ. Мы записываем начальное место, где пользователь коснулся экрана.
2. Получено POINTER_DOWN. Поскольку мы знаем, что это может быть жест двумя пальцами, мы записываем место второго касания
3. Получил ДВИЖЕНИЕ. Теперь мы проверяем, переместились ли два обнаруженных нами указателя друг на друга. *
* Обратите внимание, что в объекте Motion Event можно получить координаты различных касаний с помощью метода event.getX ().
Предсказания жестов
У Android также есть возможность загружать определенные жесты в ваше приложение. Эти конкретные жесты могут быть более уникальными, чем упомянутые выше, такие как рисование символа Z на экране.
Создание этих типов жестов требует эмулятора. Сначала вы рисуете свои жесты в эмуляторе, а затем сохраняете их в файл. Затем вы можете взять созданный файл жестов и загрузить его в свое приложение. Добавив GestureOverLayView в свой макет, вы можете использовать вновь созданные жесты, чтобы делать все, что вы захотите.
Нажмите здесь, чтобы получить больше информации о предсказаниях жестов.
Ссылка: руководство для Android: добавление жестов в ваше приложение от нашего партнера по JCG Исаака Тейлора в блоге Programming Mobile .