Я использую dispatchTouchEvent для перехвата касаний в моей деятельности. Это мой код для перегруженной методы:Одно касание в dispatchTouchEvent зарегистрировано несколько раз
public boolean dispatchTouchEvent(MotionEvent ev) {
int[] l = new int[2];
mVideoImage.getLocationOnScreen(l);
int left = l[0];
int top = l[1];
int w = mVideoImage.getWidth();
int h = mVideoImage.getHeight();
float x = ev.getX();
float y = ev.getY();
if (x > left && x < (left + w) && y > top && y < (top + h)) {
startActivity(new Intent(getApplicationContext(), ActivityVideoPlayer.class));
}
else {
finish();
}
return super.dispatchTouchEvent(ev);
}
Проблема заключается в том, что каждый раз, когда я прикасаюсь к экрану, dispatchTouchEvent называется 2 или 3 раза (обычно 3), и когда код в условном выполняются 3 раза , он запускает 3 действия ActivityVideoPlayer, которых я не хочу.
Почему это происходит, и как мне получить только 1 контакт из 1 касания или, по крайней мере, обойти это, чтобы мой ActivityVideoPlayer не запускался 3 раза? Думаю, я мог бы сделать один-топ с этим или что бы то ни было, что делает только одну активность данного вида активным одновременно, теперь, когда я думаю об этом, хотя было бы неплохо узнать, что здесь происходит.
Интересно, возможно ли, что на каждом слое на экране, где я касаюсь, нет ни одного касания, которое я касаюсь (виды + группы просмотра, в которых они сидят), и в этом случае кажется, что я должен иметь возможность потреблять коснитесь, прежде чем он попадет на несколько слоев. Я попытался изменить dispatchTouchEvent, чтобы вернуть true и false, чтобы увидеть, будет ли это делать, но не повезло.
Заранее спасибо.