studio example drop and android drag-and-drop

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



drag and drop list android example (2)

Como se documenta en documentos, el

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

devuelve la posición de la acción de arrastre 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.

Entonces, 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 cada celda en GridView acepta el evento dragEvent, puede tomar la vista que obtiene el evento onDrop y hacer algo como eso 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; }

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

Estoy intentando animar una celda de vista de cuadrícula arrastrando y soltando, animando la celda desde la X, Y del punto de lanzamiento hasta la nueva X, Y.

A continuación está 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 de la vista de grilla 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 DragEvent. los
  • Los valores de SourceView son los de la celda donde se inició el arrastre.
  • Los valores de TargetView son de la celda donde terminó el evento de arrastre.

¿Alguien puede señalarme en la dirección correcta de cómo obtener las coordenadas X, Y del punto de liberación del DragEvent? ¿O explicar qué devuelve getX () y getY () de un DragEvent?

Gracias


tuve un problema como este hay 3 cosas importantes: 1- establecer el oyente de arrastre en la vista principal (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 desee Arrástrelo sobre el padre. por ejemplo, puede usar setonlongclick () y establecer starDrag () dentro del evento longclick