cachance7 cachance7 - 2 months ago 9
Android Question

Disable or prevent multitouch in Activity

I have several Views on an Activity which a user wants to touch quickly in succession and I capture these touches using a

TouchListener
and handling
MotionEvent.ACTION_DOWN
. However, if the user is using two hands, it's very likely that the next View will be 'Touch'ed before the user pulls the previous finger up. In this scenario, a
MotionEvent.ACTION_MOVE
is fired for the first view rather than the desired
MotionEvent.ACTION_DOWN
for the second view.

Is there any way to work around or prevent this behavior? I've tried dispatching a new event with
MotionEvent.ACTION_UP
and also removing the event listener but neither seem to work.

Answer

The best way to work around this scenario is to use a ViewGroup and implement the onInterceptTouchEvent method to manually route the touch events as you see fit.

This was originally answered here: Android multitouch! hack anyone?

Code implementing this solution (found in the comments section of the answer to the above question) is found here: http://pastebin.com/hiE1aTCw

Comments