Ваш код будет выполняться во время каждого сенсорного события.Когда он активируется в первый раз, он, скорее всего, относится к событию ACITON_DOWN
(когда пользователь впервые касается экрана).Во второй раз это, скорее всего, относится к событию ACTION_UP
(когда пользователь убирает палец с экрана).Аналогично, если вы проведете пальцем по экрану, один и тот же код будет выполняться много раз для события ACTION_MOVE
.Вы должны проверить, какие типы прикосновений это.Сделайте что-то вроде этого:
switch(event.getAction()){
case MotionEvent.ACTION_DOWN:
// Do something that should only happen when the user first touches the screen
break;
case MotionEvent.ACTION_MOVE:
// Do something that should only happen when the user is touching the screen
break;
case MotionEvent.ACTION_UP:
// Do something that should only happen when the user stops touching the screen
break;
}
РЕДАКТИРОВАТЬ:
Мультитач в Android странно в лучшем случае.Не все устройства могут справиться с этим.Не все устройства могут обрабатывать более x раз касаний и т. Д. Если вы хотите обрабатывать чехлы DOWN для отдельных пальцев, то вы можете использовать элементы ACTION_POINTER_X
.Если бы у вас была такая серия событий:
1. User touches screen
2. User touches screen with second finger
3. User lifts finger 1
4. User touches screen with finger 1
5. User lifts finger 2
6. User touches screen with finger 2
7. User lifts both finger 1 and finger 2
8. User touches screen with only finger 2
9. User touches screen with finger 1
События, которые будут запущены, будут такими:
1. ACTION_DOWN
2. ACTION_POINTER_2_DOWN
3. ACTION_POINTER_1_UP
4. ACTION_POINTER_1_DOWN
5. ACTION_POINTER_2_UP
6. ACTION_POINTER_2_DOWN
7. ACTION_UP (also, one of the pointers actions will fire depending on which finger was lifted first)
8. ACTION_DOWN
9. ACTION_POINTER_2_DOWN
И т. Д.