У меня есть SurfaceView, где я рисую круг. Я знаю положение и радиус круга.
Мне нужно знать, нажимает ли пользователь круг. Пользователь может касаться экрана одним или двумя пальцами. Если какой-либо из пальцев находится над областью круга, его необходимо нажать.
Когда пользователь поднимает палец с экрана, а над кругом больше нет пальцев, круг перестает нажиматься.
У меня нет проблем, когда у пользователя только один палец на экране, но я не могу решить проблему, когда он использует два пальца.
Проблема, с которой я столкнулся, заключается в том, что когда я получаю действие ACTION_UP или ACTION_POINTER_UP, я не знаю, какой указатель больше не отображается на экране, поэтому мне не нужно смотреть, находятся ли их координаты над кругом.
Я сделал несколько попыток без успеха, последняя из которых:
protected boolean checkPressed(MotionEvent event) {
ColourTouchWorld w = (ColourTouchWorld)gameWorld;
int actionMasked = event.getActionMasked();
for (int i = 0; i < event.getPointerCount(); i++) {
if (i == 0 && (actionMasked == MotionEvent.ACTION_UP || actionMasked == MotionEvent.ACTION_POINTER_UP)) {
// the pointer with index 0 is no longer on screen,
// so the circle is not pressed by this pointer, even if
// it's coordinates are over the area of the circle
continue;
}
if (isPointInCicle(event.getX(i)), event.getY(i))) {
return true;
}
}
return false;
}
Есть идеи? Спасибо.