Другой способ получения событий касания предусматривает регистрацию обработчика обратного вызова для событий касания в объекте View. Для получения событий класс должен реализовывать интерфейс View.OnTouchListener. Чтобы установить обработчик для заданного объекта View, необходимо вызвать метод setOnTouchListener этого View. Класс, реализующий View.OnTouchListener, должен предоставить реализацию метода onTouch. В то время как метод onTouchEvent получает в качестве параметра только объект MotionEvent, метод onTouch ожидает как View, так и MotionEvent. Причина в том, что интерфейс OnTouchListener может получать объекты MotionEvent от множества представлений. Сказанное станет более понятным после рассмотрения примера приложения.
Если обработчик MotionEvent (либо через метод onTouchEvent, либо через метод onTouch) потребляет событие, которое не должны получить другие объекты, метод возвращает true. Это сообщает Android о том, что данное событие не должно передаваться любым другим представлениям. Если объект View не заинтересован в этом или любых будущих событиях, относящихся к данной последовательности касания, возвращается false. Метод onTouchEvent базового класса View ничего не делает, а просто возвращает false. Подклассы View могут поступать так же, а могут и по-другому. Например, объект Button будет потреблять событие касания, т.к. касание эквивалентно щелчку, и, таким образом, его метод onTouchEvent будет возвращать true. После получения события ACTION_DOWN объект Button изменит свой цвет, отразив факт совершения на нем щелчка. Кроме того, объект Button также желает получить событие ACTION_UP, чтобы узнать, когда пользователь убрал палец с экрана, и инициировать логику щелчка на кнопке. После того как метод onTouchEvent объекта Button вернул false, он больше не будет получать объекты MotionEvent, уведомляющие о перемещении пальца по сенсорному экрану.
Когда необходимо, чтобы события касания делали что-то новое в отдельном объекте View, можно расширить соответствующий класс, переопределить метод onTouchEvent и поместить в него нужную логику.
Можно также реализовать интерфейс View.OnTouchListener и установить обработчик обратного вызова в объекте View. За счет настройки обработчика обратного вызова для onTouch объекты MotionEvent будут доставляться в него перед тем, как попасть в метод onTouchEvent объекта View. Метод onTouchEvent объекта View будет вызван, только если onTouch вернет false. Проще всего понять это, обратившись к примеру приложения.
На заметку! В конце будет дан URL-адрес, по которому можно загрузить проекты, рассмотренные в этой, и затем импортировать их непосредственно в Eclipse.
Опубликовал katy
February 17 2015 18:28:34 ·
0 Комментариев ·
3172 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.