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