Android Множественное нажатие onTouchEvent event.actionMasked
override fun onTouchEvent(event: MotionEvent): Boolean {
val touchX = event.x
val touchY = event.y
val id = event.getPointerId(event.actionIndex)
when(event.actionMasked){
MotionEvent.ACTION_DOWN -> {
Log.d("MotionEvent", "ACTION_DOWN id=$id x=$touchX y=$touchY")
}
MotionEvent.ACTION_POINTER_DOWN -> {
val pointerCount = event.pointerCount
for (i in 0 until pointerCount) {
val multiTouchX = event.getX(i)
val multiTouchY = event.getY(i)
Log.d("MotionEvent", "ACTION_POINTER_DOWN i=$i x=$multiTouchX y=$multiTouchY")
}
}
MotionEvent.ACTION_MOVE -> {
val pointerCount = event.pointerCount
for (i in 0 until pointerCount) {
val multiTouchX = event.getX(i)
val multiTouchY = event.getY(i)
Log.d("MotionEvent", "ACTION_MOVE i=$i x=$multiTouchX y=$multiTouchY")
}
}
MotionEvent.ACTION_POINTER_UP -> {
val pointerCount = event.pointerCount
for (i in 0 until pointerCount) {
val multiTouchX = event.getX(i)
val multiTouchY = event.getY(i)
Log.d("MotionEvent", "ACTION_POINTER_UP i=$i x=$multiTouchX y=$multiTouchY")
}
}
MotionEvent.ACTION_UP -> {
Log.d("MotionEvent", "ACTION_UP id=$id x=$touchX y=$touchY")
}
MotionEvent.ACTION_CANCEL -> {
Log.d("MotionEvent", "ACTION_CANCEL id=$id x=$touchX y=$touchY")
}
}
return true //super.onTouchEvent(event)
}
Пытаюсь понять, когда я ставлю на экран 1 палец то срабатывает ACTION_DOWN, все ок Когда убираю то ACTION_UP, тоже понятно
когда ставлю больше одного то ACTION_POINTER_DOWN, тоже все ок. но вот убрав один из N, я получаю ACTION_POINTER_UP где все касания что были, ну пока что тоже логично, но появляется некая несуразица..
Если после отрыва одного пальца из трех, я получаю отрыв всех пальцев, а в ACTION_MOVE продолжают логировать два оставшихся, не имея ACTION_POINTER_DOWN...
Иными словами, как мне понять какой палец оторвался, а какой остался на экране?