Quiero capturar la dirección del movimiento del dedo en el teléfono táctil Android. Si un usuario desliza su dedo hacia arriba/abajo/izquierda/derecha, quiero capturar esta dirección. ¿Cómo puedo encontrar esto? Gracias.Cómo capturar la dirección del movimiento del dedo en el teléfono Android?
Respuesta
Implementar onTouchEvent(), y calcular dx y dy por donde el usuario presiona hacia abajo y levanta. Puede usar estos valores para descubrir la dirección del movimiento.
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";
}
}
}
Su mejor opción sería lidiar con el MotionEvent que obtiene de una devolución de llamada de View.OnTouchListener(). Los eventos de movimiento realizan un seguimiento de cómo está interactuando actualmente con la Vista por su propiedad de acción.
Me imagino que puede calcular en qué dirección alguien desliza su dedo examinando la propiedad de acción de MotionEvents y los valores de x/y de donde ocurrió el evento de movimiento.
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;
}
Hay un montón de otros métodos disponibles en el objeto MotionEvent para su uso, así: http://developer.android.com/reference/android/view/MotionEvent.html
el cheque debe ser inferior si '(Math.abs (deltaY)> Math.abs (deltaX))' – tibbi
@tibbi fijo, gracias! –
- 1. Vista giratoria de OpenStreetMap: ¿cómo deslizar el mapa en la dirección del movimiento del dedo después de la rotación en Android?
- 2. Aplicaciones de dibujo con la yema del dedo en Android?
- 3. UITouch toca Dirección y velocidad del dedo movido
- 4. Android MapActivity en el movimiento del mapa
- 5. cómo deslizar el dedo en el teléfono de Windows 7
- 6. Manejo del movimiento del mouse de cámara en Javascript (permitiendo el movimiento continuo del mouse)
- 7. ¿Cómo puedo obtener la dirección de movimiento usando un acelerómetro?
- 8. obteniendo IMSI del teléfono Android?
- 9. Android: Seguimiento del movimiento del puntero del mouse
- 10. Android: Recuperar el nombre del contacto del número de teléfono
- 11. Cómo reiniciar el teléfono Android desde el código del kernel
- 12. Cómo transmitir la pantalla del teléfono Android a la PC
- 13. ¿Cómo obtener el número de teléfono del teléfono en el código de Android?
- 14. Calculando la velocidad de movimiento del usuario en Android
- 15. manejo del evento de apagado del teléfono en Android
- 16. Arrastrar UIView debajo del dedo
- 17. Android SimpleOnPageChangeListener - Determinar la dirección del deslizamiento
- 18. Detectando el tamaño del dedo de un usuario en touch
- 19. ¿Cómo construir Android sin la aplicación del teléfono?
- 20. Cómo rastrear la punta del dedo en OpenCV u OpenFrameworks?
- 21. Movimiento del mouse en el elemento
- 22. alisar el movimiento del mouse
- 23. simular el movimiento del ratón en Ubuntu
- 24. ¿Cómo conseguir la orientación del teléfono Android que coincida con la orientación humana?
- 25. Android detectar evento de bloqueo del teléfono
- 26. ¿Cómo conseguir los contactos del teléfono en Android
- 27. ¿Cómo cambiar el puntero del mouse al puntero del dedo en el swing?
- 28. Cómo capturar la rueda del mouse en el panel?
- 29. ¿Cómo cambiar el cursor del puntero al dedo usando jQuery?
- 30. Seguimiento del movimiento del mouse en la clase QGraphicsScene
Buena respuesta, pero encontré algunos errores tipográficos y tuve que llevar algunas de esas variables a un alcance mayor para hacerlas mutables desde el interior del interruptor. –
Para la segunda caja del interruptor, utilicé ACTION_MOVE en lugar de ACTION_UP porque en un control deslizante de ViewPager se invoca sin ACTION_UP. Tengo una orientación ScrollView w/vertical sostenida por un ViewGroup y esa es una página de ViewPager. Deslizar en ScrollView cambia de página en lugar de no responder. caso MotionEvent.ACTION_MOVE: float dx = event.getX() - x1; float dy = event.getY() - y1; if (Math.abs (dx) <= Math.abs (dy)) {// desplazamiento vertical v.getParent(). RequestDisallowInterceptTouchEvent (true); } else {v.getParent(). RequestDisallowInterceptTouchEvent (false);} break; –
ScrollView w/orientación vertical anidado dentro de otro ScrollView, que se celebró en un ViewGroup que quise decir. –