Я хочу захватить направление движения пальцев на сенсорном телефоне Android. Если пользователь скользит пальцем в направлении вверх/вниз/влево/вправо, я хочу зафиксировать это направление. Как я могу найти это? Благодарю.Как захватить направление движения пальца в телефоне Android?
ответ
Реализовать onTouchEvent(), и вычислить дх и ду тем, где пользователь нажимает вниз и поднимается вверх. Эти значения можно использовать для определения направления движения.
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";
}
}
}
Лучше всего иметь дело с MotionEvent, который вы получаете из обратного вызова View.OnTouchListener(). События движения отслеживают, как вы в настоящее время взаимодействуете с представлением по свойству action.
Я бы предположил, что вы можете рассчитать, в каком направлении кто-то скользит пальцем, исследуя свойство действия 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
нижний чек должен быть 'если (Math.abs (deltaY)> Math.abs (DeltaX))' – tibbi
@tibbi фиксированной, спасибо! –
- 1. Направление движения Android Touch
- 2. Как определить направление движения?
- 3. найти правильное направление при перемещении пальца в устройствах Android.
- 4. определить направление вращения пальца
- 5. KML Направление движения Линия
- 6. Как найти направление движения устройства?
- 7. Как записать направление движения SAS?
- 8. Направление движения с движением
- 9. Определить направление движения камеры?
- 10. Как определить направление движения объекта
- 11. Определите направление движения касания
- 12. как определить направление движения пальцем?
- 13. Направление движения - Карта Google
- 14. Как уловить направление движения от IronSwipeableContainer event
- 15. Определить направление кругового движения
- 16. Направление движения по PHP
- 17. Получить направление движения в iPhone
- 18. Как получить направление пальца в игре для Android
- 19. Как показать направление движения автомобиля в Gmap.Net
- 20. Ничья Направление движения на карте
- 21. Определить направление движения касания пользователя?
- 22. частиц - труба направление движения дыма
- 23. Как определить направление движения пальцев с помощью iPhone UITouch
- 24. MKMapview: Как получить направление движения текущего местоположения?
- 25. google maps API: как показать направление движения?
- 26. Как получить направление движения, используя только GPS?
- 27. Как получить точное направление в телефоне?
- 28. Получить направление движения устройства с помощью акселерометра
- 29. Розыгрыша в Canvas пальца, Android
- 30. Неправильное направление движения, когда объект в воздухе
Хороший ответ, но я нашел некоторые опечатки и должен был перенести некоторые из этих переменных в более высокую область, чтобы сделать их изменяемыми изнутри коммутатора. –
Для второго случая переключения я использовал ACTION_MOVE вместо ACTION_UP, потому что в виджетах ViewPager вызывается без ACTION_UP. У меня есть ScrollView с вертикальной ориентацией, удерживаемой ViewGroup, и это страница ViewPager. Прокрутка на ScrollView меняет страницу вместо того, чтобы не отвечать. case MotionEvent.ACTION_MOVE: float dx = event.getX() - x1; float dy = event.getY() - y1; if (Math.abs (dx) <= Math.abs (dy)) {// вертикальная прокрутка v.getParent(). RequestDisallowInterceptTouchEvent (true); } else {v.getParent(). RequestDisallowInterceptTouchEvent (false);} break; –
ScrollView с вертикальной ориентацией, вложенной в другой ScrollView, который я имел в виду в ViewGroup. –