Я хочу использовать детектор жестов для определения различий между одним нажатием, двойным нажатием и долгим нажатием, но независимо от того, что я пытаюсь, он возвращает результат при длительном нажатии
val gestureDetector = GestureDetector(activity, object : GestureDetector.SimpleOnGestureListener() {
override fun onDoubleTap(e: MotionEvent?): Boolean {
Log.d("gestureResult","doube tap")
return super.onDoubleTap(e)
}
override fun onSingleTapConfirmed(e: MotionEvent?): Boolean {
Log.d("gestureResult","single tap")
return super.onSingleTapConfirmed(e)
}
override fun onLongPress(e: MotionEvent?) {
Log.d("gestureResult","long press")
super.onLongPress(e)
}
})
imageView.setOnTouchListener { v, event ->
gestureDetector.onTouchEvent(event)
}
Основываясь на предложении @pskink, я добавил журнал перед вызовом жеста, обнаруженного в onTouchEvent, распечатав в журнале событие. Это результат. Первый был для одного щелчка, второй - для двойного щелчка и напечатан дважды, третий - для длинного щелчка.
2019-05-04 16:10:35.634 9614-9614/co.getdere D/EventLog: event MotionEvent { action=ACTION_DOWN, actionButton=0, id[0]=0, x[0]=272.9829, y[0]=234.94873, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=162832092, downTime=162832092, deviceId=0, source=0x1002 }
2019-05-04 16:10:41.095 9614-9614/co.getdere D/EventLog: event MotionEvent { action=ACTION_DOWN, actionButton=0, id[0]=0, x[0]=353.96313, y[0]=206.9336, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=162837555, downTime=162837555, deviceId=0, source=0x1002 }
2019-05-04 16:10:41.301 9614-9614/co.getdere D/EventLog: event MotionEvent { action=ACTION_DOWN, actionButton=0, id[0]=0, x[0]=353.96313, y[0]=206.9336, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=162837759, downTime=162837759, deviceId=0, source=0x1002 }
2019-05-04 16:10:45.428 9614-9614/co.getdere D/EventLog: event MotionEvent { action=ACTION_DOWN, actionButton=0, id[0]=0, x[0]=221.9624, y[0]=209.96582, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=162841885, downTime=162841885, deviceId=0, source=0x1002 }