Одновременная обработка событий onClick и onTouchEvent

#android #android-widget

#Android #android-виджет

Вопрос:

У меня есть кнопка, которую я обрабатываю с помощью обработчика onClick.

Однако мне также нужно реагировать на события onTouchEvent, чтобы я мог обрабатывать подсветку кнопок.

Проблема в том, что если я верну «false» из своего обработчика onTouchEvent, он вызовет обработчик onClick, но никогда не выдаст мне onTouchEvent для последующего события «up».

Если я верну «true» из onTouchEvent, я получу событие «up», но оно никогда не отправит касание onClick.

Итак, каковы мои варианты?

  1. Внедрите мою собственную обработку «щелчка» внутри onTouchEvent, что означает, что мне потребуется отслеживать перемещения в области кнопок и за ее пределами и т. Д. Кажется довольно сложным.
  2. Я мог бы заставить мою кнопку использовать селектор вместо одного изображения и назначать разные изображения для разных состояний. Проблема, с которой я сталкиваюсь, заключается в том, что селекторы громоздки для изменения изображений, что мне нужно сделать. (Когда мое приложение находится в разных «режимах», изображения кнопок для разных состояний меняются. Опять же, это кажется слишком сложным.

Разве нет простого способа добиться всего этого???

Комментарии:

1. Позвольте мне посмотреть, правильно ли я это понимаю. Вы хотите переопределить подсветку кнопки по умолчанию своей собственной? Если да, можете ли вы выполнить все свои функции выделения в onTouch и вызвать button.performClick() при получении ACTION_UP? performClick вызывает метод onClick кнопки, если установлен onclicklistener .

Ответ №1:

Если вам нужны события щелчка и касания в одном и том же представлении, используйте детектор жестов. Вам следует специально изучить метод onShowPress его слушателя.

Ответ №2:

Похоже, что ваш лучший выбор будет вытекать из варианта 2, приведенного выше.

Я бы предложил создать несколько Button StateListDrawable селекторов, а затем программно переключаться между стилями, используя Button.setBackgroundResource() .

Комментарии:

1. Это хорошая идея. Однако на самом деле я просто переписывал весь StateListSelector каждый раз, когда хотел изменить изображения. Тем не менее, я хотел бы оставить открытым вопрос о том, как обрабатывать onClick и onTouchEvents одновременно.