2013-02-17 5 views
1

Я пытаюсь сделать элемент управления mulitouch, но всегда получаю ошибки, когда я удаляю палец в другой последовательности, когда я даю его на экран.Управление Android Multitouch

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    pointers = event.getPointerCount(); 
    for(int a = 0; a < event.getPointerCount(); a++) { 
     expos[a] = (int) event.getX(event.getPointerId(a)); 
     eypos[a] = (int) event.getY(event.getPointerId(a)); 
    } 
    if(event.getAction() == MotionEvent.ACTION_DOWN) pressed = true; 
    if(event.getAction() == MotionEvent.ACTION_UP) pressed = false; 
    return true; 
} 

Я думаю, что проблема в том, что, когда я удалить первый палец второй все еще имеет идентификатор 2, но что я могу сделать, чтобы исправить это?

ответ

1

Как я понимаю, проблема в том, что вы не получаете событие ACTION_UP, когда вы отпускаете один из пальцев. Решением этого является использование ACTION_POINTER_UP. Он обнаружит выбросы любых непервичных указателей и должен решить проблему.

+0

Но с ACTION_POINTER_UP я знаю только, когда указатели удаляются в другой последовательности. Как я могу сделать указатель 2 на указатель 1 при удалении указателя 1? – user2080326

+0

Это делается автоматически. Идентификатор проблемы, который вы используете getPointerID, но вам это не нужно. Вместо: expos [a] = (int) event.getX (event.getPointerId (a)); вам нужно написать: expos [a] = (int) event.getX (a); – vicciu

Смежные вопросы