Я хочу захватить направление движения пальца на сенсорном телефоне Android. Если пользователь скользит пальцем в направлении вверх/вниз/влево/вправо, я хочу зафиксировать это направление. Как я могу найти это? Спасибо.
Как захватить направление движения пальцев в телефоне Android?
Ответ 1
Внедрить onTouchEvent() и рассчитать dx и dy, где пользователь нажимает и поднимает вверх. Вы можете использовать эти значения для определения направления движения.
float x1, x2, y1, y2, dx, dy;
String direction;
switch(event.getAction()) {
case(MotionEvent.ACTION_DOWN):
x1 = event.getX();
y1 = event.getY();
break;
case(MotionEvent.ACTION_UP): {
x2 = event.getX();
y2 = event.getY();
dx = x2-x1;
dy = y2-y1;
// Use dx and dy to determine the direction of the move
if(Math.abs(dx) > Math.abs(dy)) {
if(dx>0)
direction = "right";
else
direction = "left";
} else {
if(dy>0)
direction = "down";
else
direction = "up";
}
}
}
Ответ 2
Лучше всего иметь дело с MotionEvent, который вы получаете из обратного вызова View.OnTouchListener(). События движения отслеживают, как вы в настоящее время взаимодействуете с представлением по свойству действия.
Я бы предположил, что вы можете рассчитать, в каком направлении кто-то скользит пальцем, изучая свойство действия MotionEvents и значения x/y, где происходило событие движения.
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
oldX= event.getX();
oldY= event.getY();
break;
case MotionEvent.ACTION_MOVE:
int newX = motionEvent.getX();
int newY = motionEvent.getY();
int deltaX = oldX - newX;
int deltaY = oldY - newY;
if(Math.abs(deltaY)>Math.abs(deltaX))
//Motion in Y direction.
else
// Motion in X direction.
break;
}
Существует множество других методов, доступных для объекта MotionEvent: http://developer.android.com/reference/android/view/MotionEvent.html