@KrUgerD

Как сделать LongPress внутри onTouchEvent(Kotlin)?

Есть условный код.

spoiler
@SuppressLint("ClickableViewAccessibility")
override fun onTouchEvent(event: MotionEvent): Boolean {
when (event.action) {
MotionEvent.ACTION_DOWN -> {
Log.d(TAG,"TAP ")

}
MotionEvent.ACTION_MOVE -> {
}

MotionEvent.ACTION_UP -> {
}

MotionEvent.ACTION_CANCEL -> {
}
}
return true
}

Одно нажатие можно так обработать(Хотя это криво),как можно обработать долгое нажатие?Например,чтобы в лог выввадило через 3..4.. секунды. Код пишется внутри касмного SurfaceView.
  • Вопрос задан
  • 146 просмотров
Решения вопроса 1
KuSu
@KuSu
Android разработчик
Используемый мной вариант. В ACTION_DOWN надо запомнить время касания, а в ACTION_UP проверить сколько времени прошло. Условно <1500 мсек - тап, больше - лонг тап. Если ровно через N времени надо оповестить о лонг тапе, даже если пользователь не убрал палец - то тогда запускаю таймер на это время. Но тогда в ACTION_OUTSIDE / ACTION_POINTER_UP / ACTION_CANCEL надо таймер сбросить.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
zagayevskiy
@zagayevskiy Куратор тега Android
Android developer at Yandex
Можно использовать GestureDetector.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы