Способ onTouchEvent()
даже работает, если вы вернете true, это означает, что событие касания было обработано, и Android не будет продолжать вниз иерархию представления для обработки события касания.Если вы вернете false, оно продолжится.
В этом случае, когда вы всегда возвращаете true, вы всегда говорите, что событие касания было обработано.Таким образом, любые ваши жесты никогда не будут обработаны, потому что вы говорите, что они уже обработаны.Таким образом, похоже, что карта зависает.Вместо этого поместите условие, подобное этому:
@Override
public boolean onTouchEvent(MotionEvent event){
boolean wasHandled = false;
if(/* condition where your touch event was handled */)
wasHandled = true;
else
wasHandled = super.onTouchEvent(event);
return wasHandled;
}
Причина сбоя при возврате false - либо проблема в вашей программе, либо переход в цикл, поскольку событие никогда не обрабатывается.