Мой класс расширяет Представление, и я должен получить непрерывные сенсорные события на нем.
Если я использую:
public boolean onTouchEvent(MotionEvent me) {
if(me.getAction()==MotionEvent.ACTION_DOWN) {
myAction();
}
return true;
}
... сенсорное событие получено однажды.
Что, если я должен получить непрерывные касания, не шевеля пальцем? Скажите мне, что я не должен использовать потоки или таймеры. Мое приложение уже слишком много тяжело.
Спасибо.
Используйте if(me.getAction() == MotionEvent.ACTION_MOVE)
. Невозможно удержать палец на экране на 100% неподвижным, поэтому Action_Move будет вызываться каждый раз, когда палец движется, даже если это всего лишь пиксель или два.
Можно также проверять me.getAction() == MotionEvent.ACTION_UP
- пока этого не произойдет, палец пользователя должен оставаться на экране.
Это простой фрагмент кода, который показывает, как вы можете обрабатывать событие продолжения касания. Когда вы касаетесь устройства и удерживаете касание и перемещаете искатель, выполняется действие «Сенсорное перемещение».
@Override
public boolean onTouchEvent(MotionEvent event) {
float x = event.getX();
float y = event.getY();
if(isTsunami){
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
// Write your code to perform an action on down
break;
case MotionEvent.ACTION_MOVE:
// Write your code to perform an action on contineus touch move
break;
case MotionEvent.ACTION_UP:
// Write your code to perform an action on touch up
break;
}
}
return true;
}