Cómo obtener las coordenadas X, Y correctas de un DragEvent.ACTION_DROP

Tengo problemas para obtener las coordenadas X, Y de un DragEvent ACTION_DROP.

Estoy tratando de animar una celda gridview arrastrar y soltar, animando la celda de la X, Y del punto de liberación a la nueva X, Y.

A continuación se muestra el código que estoy usando para intentar obtener las coordenadas X, Y. Sin embargo, no devuelve los valores que esperaría.

@Override public boolean onDrag(View v, DragEvent event) { switch (action) { case DragEvent.ACTION_DROP: float x = event.getX(); float y = event.getY(); break; } } 

Arrastrar la primera celda gridview a la celda adyacente a la derecha me da estos valores.

Drop X, Y: 176.0.127.0

SourceView X, Y: 0.0.0.0

TargetView X, Y 360.0,0.0

  • Los valores Drop son los valores devueltos por el DragEvent. los
  • Los valores de SourceView son los de la celda en la que se inició la operación de arrastre.
  • Los valores de TargetView son de la celda donde terminó el evento de arrastrar.

¿Puede alguien apuntarme en la dirección correcta de cómo obtener las coordenadas X, Y del punto de liberación del DragEvent? ¿O explica lo que el getX () y getY () de un DragEvent realmente devuelve?

Gracias

2 Solutions collect form web for “Cómo obtener las coordenadas X, Y correctas de un DragEvent.ACTION_DROP”

Como se documenta en documentos, el

 event.getX(); event.get(y); 

Devuelve la posición de la acción de arrastrar dentro de la vista .

Los métodos getX () y getY () proporcionan la posición X e Y del punto de arrastre dentro del cuadro delimitador del objeto Ver.

Así que para obtener las coordenadas absolutas de la posición de caída, puede anular GridView onTouchEvent y obtener los valores de event.getRawX (), event.getRawY ().

Si todas las celdas de GridView aceptan el dragEvent, puede tomar la vista que recibe el evento onDrop y hacer algo así para recuperar las coordenadas:

 @Override public boolean onDrag(View v, DragEvent event) { switch (event.getAction()) { case DragEvent.ACTION_DROP: int[] oldFolderCellPosition = new int[2]; v.getLocationOnScreen(oldFolderCellPosition); return true; } 

Tuve un problema como este. Hay 3 cosa importante 1- establecer el oyente de arrastre en la vista padre (por ejemplo: diseño lineal o relativo o ..) 2- usar ACTION_DROP para tomar cooridinate x, y y no ACTION_DRAG_ENDED 3- establecer startDrag () en la vista que desea Arrástrelo sobre el padre. Por ejemplo, puede utilizar setonlongclick () y establecer starDrag () dentro del evento longclick

  • Android: Problema de arrastrar y soltar
  • Arrastrar y soltar con onDraglistener animar para volver a la posición original si no se deja caer en el objetivo
  • ¿Cómo se puede desplazar un "punto de destino" de Android drag-shadow de su "punto de contacto"?
  • Cómo cancelar View.OnDragListener en android durante la operación de arrastrar?
  • Cómo convertir la ubicación de toque de View en la ubicación de la pantalla HTML de WebView
  • Leer WCF REST fecha de android
  • ¿Cómo obtener el comportamiento de pantalla de inicio de arrastrar a bin, en mi propia aplicación?
  • Drag'n'Drop ConcurentModificationException
  • Android: realizar arrastrar y soltar mediante programación
  • Cómo arrastrar varias vistas de botón en java
  • Establecer anclaje personalizado al arrastrar una vista
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.