Я хочу рассчитать дельта положения касания на экране. Для этого я использую этот код:Android: Простейший способ расчета дельта положения касания?
public boolean onTouchEvent(MotionEvent event) {
touchX = (int) event.getX();
touchY = (int) event.getY();
deltaX = touchX - oldX;
deltaY = touchY - oldY;
oldX = touchX;
oldY = touchY;
return super.onTouchEvent(event);
}
Теперь, когда я двигаю палец на экране в течение некоторого времени, я получаю правильную дельту. Но проблема возникает, когда я останавливаю палец, но не поднимаю его. В то время я просто получаю ненулевую дельта последнего кадра. Это потому, что onTouchEvent
не вызывается, когда палец находится на экране, но статичен. Я должен получить нулевую дельта, когда палец статичен.
Какое решение этой проблемы?
Я использовал тот же метод раньше, кроме строки 'mHandler.removeCallbacksAndMessages (null);'. Но это было вроде лагги. Использование вашего решения убило отставание. Что делает эта линия? –
Эта строка удаляет все незавершенные задачи. Это необходимо, потому что, если произойдет новое событие касания, все предыдущие ожидания не имеют смысла. –