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.
A multi-touch gesture is when multiple pointers (fingers) touch the screen at the same time. This lesson describes how to detect gestures that involve multiple pointers. Refer to the following related resources: Input Events API Guide.
To prevent multi touch you should turn off splitMotionEvents or windowEnableSplitTouch attribute inside ViewGroup were buttons are located.
The easiest way I found to force single touch across an entire app is to set it using a theme:
<style name="MyTheme" parent="@android:style/Theme.Holo.Light"> <item name="android:windowEnableSplitTouch">false</item> <item name="android:splitMotionEvents">false</item> </style>
Manifest:
<application android:label="@string/app_name" android:theme="@style/MyTheme" >
if someone still searching for best solution, put in the xml the following code :
android:splitMotionEvents = false
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With