Как обнаружить событие onLongClick ACTION_UP? - PullRequest
0 голосов
/ 19 августа 2011

У меня есть изображение, которое реализует OnClickListener и OnLongClickListenerOnLongClickListener при нажатии вниз (ACTION_DOWN) я запускаю таймер.Я хочу отменить его на ACTION_UP.

Теперь, если я реализую OnTouchListener для этого изображения, тогда я ловлю ACTION_DOWN для обычных кликов.И я хочу ловить только длинные клики.

Почему долго не срабатывает событие пожара ACTION_UP?Как я могу обнаружить это событие и остановить таймер.

Если вам нужен код, я могу опубликовать его, но я не думаю, что он поможет вам, поскольку в коде нет ошибок.

PS.Я не могу остановить таймер в любое конкретное время или значение, так как это длительное нажатие постоянно увеличивает значение другого элемента.Этот процесс увеличения следует останавливать только при длительном нажатии на изображение ACTION_UP.

1 Ответ

9 голосов
/ 19 августа 2011

Просто используйте OnTouchListener и забудьте о OnLongClickListener.Вы можете обнаружить длинный щелчок, проверив координаты и время нажатия, у вас есть вся эта информация в объекте MotionEvent, переданная OnTouch ().

1- Чтобы проверить координаты, используйте getX () и getY () из MotionEvent иgetDrawingRect () из вашего контейнера ImageView.

2- Чтобы проверить время нажатия, используйте getEventTime (), сохраняя первый раз в ACTION_DOWN, а затем вычислите, вычтя со временем в событии ACTION_UP.Вы можете предположить, что 800 мс для длинного клика.

...