¿Cómo obtener la posición táctil en Android?
Necesito obtener la posición inicial táctil (X, Y), la posición de movimiento táctil y la posición final táctil de la pantalla en Android.
@Override
public boolean onTouchEvent(MotionEvent event)
{
int x = (int)event.getX();
int y = (int)event.getY();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
case MotionEvent.ACTION_MOVE:
case MotionEvent.ACTION_UP:
}
return false;
}
Los tres casos son para que puedas reaccionar ante diferentes tipos de eventos, en este ejemplo tocando o arrastrando o levantando el dedo nuevamente.
respuesta complementaria
dado unOnTouchListener
private View.OnTouchListener handleTouch = new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
int x = (int) event.getX();
int y = (int) event.getY();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
Log.i("TAG", "touched down");
break;
case MotionEvent.ACTION_MOVE:
Log.i("TAG", "moving: (" + x + ", " + y + ")");
break;
case MotionEvent.ACTION_UP:
Log.i("TAG", "touched up");
break;
}
return true;
}
};
establecido en alguna vista:
myView.setOnTouchListener(handleTouch);
Esto le proporciona las coordenadas del evento táctil en relación con la vista que tiene asignado el oyente táctil. La esquina superior izquierda de la vista es (0, 0)
. Si mueve el dedo por encima de la vista, y
será negativo. Si mueve el dedo hacia la izquierda de la vista, x
será negativo.
int x = (int)event.getX();
int y = (int)event.getY();
Si desea las coordenadas relativas a la esquina superior izquierda de la pantalla del dispositivo, utilice los valores sin procesar.
int x = (int)event.getRawX();
int y = (int)event.getRawY();
Relacionado
- ¿Cómo se entregan los eventos táctiles de Android?
@Override
public boolean onTouch(View v, MotionEvent event) {
float x = event.getX();
float y = event.getY();
return true;
}