2015-02-18 3 views
1

Проблема, с которой я сталкиваюсь, заключается в том, что во время стрельбы ACTION_POINTER_UP мне нужно захватить координаты последнего оставшегося пальца.Получить координаты последнего оставшегося пальца - Android Multitouch

Возьмем такого примера (с помощью 2 указателя):

  • Поместите палец на экран (ID0)
  • Места указательного палец на экране (ID1)
  • Lift большого палец от экрана (ID0)
  • Оставаясь указкой указательного пальца (ID1)
  • Grab координат указательного пальца (ID1)

Теперь в моем ACTION_POINTER_UP случае, у меня есть следующий:

case MotionEvent.ACTION_POINTER_UP: { 

    y = event.getY(); 
    x = event.getX();         
    break;           
} 

Очевидно, что это не много пользы, потому что (насколько я могу разобрать), она записывает й и у указателя, что оставил экран, который не что мне нужно.

В приведенном выше примере используются только 2 указателя, но тот же вопрос может быть применен к 3, 4 или 5 указателям.

  • Место Thumb на экране (ID0)
  • Место Указательный палец на экране (ID1)
  • Место Средний палец на экран (ID2)
  • Место кольцо пальцем на экран (ID3)
  • Lift большой палец от экрана (ID0)
  • Grab х и у из самых последних из оставшихся указателей коснулся sceeen

Пожалуйста, не связывайтесь ни с одной официальной документацией или блогами Android, я читал их несколько раз, и я до сих пор не понимаю, как я могу это достичь. Также, пожалуйста, исправьте меня, если мое понимание идентификаторов указателей неверно.

ответ

0

Поскольку метод getDownTime() MotionEvent применяется только к исходному указателю вниз и остается постоянным до тех пор, пока все указатели не подойдут, вам придется поддерживать свою собственную структуру данных, которая отображает идентификатор указателя на время, когда вы получили ACTION_DOWN или ACTION_POINTER_DOWN для этого указателя. На время этих событий ACTION_DOWN или ACTION_POINTER_DOWN используйте getEventTime().

Для полноты информации, поскольку вы не уверены в своем понимании идентификаторов указателей, я упоминаю попутно, что указатель указателя не является постоянным, а только идентификатором. Поэтому убедитесь, что вы поняли это, прежде чем использовать методы MotionEvent, которые извлекают информацию об указателе.

Также event.getX() возвращает значение индекса индекса указателя и эквивалентно event.getX (0).

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