Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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.

like image 469
cachance7 Avatar asked Dec 20 '11 04:12

cachance7


People also ask

What is multi touch in Android?

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.

How do I turn off multiple touch?

To prevent multi touch you should turn off splitMotionEvents or windowEnableSplitTouch attribute inside ViewGroup were buttons are located.


2 Answers

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" > 
like image 199
Jeremie D Avatar answered Sep 18 '22 16:09

Jeremie D


if someone still searching for best solution, put in the xml the following code :

android:splitMotionEvents = false  
like image 26
Oren Zakay Avatar answered Sep 20 '22 16:09

Oren Zakay