¿Cómo obtener la posición táctil en Android?

Resuelto Alex asked hace 54 años • 4 respuestas

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.

Alex avatar Jan 01 '70 08:01 Alex
Aceptado
@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.

dbrettschneider avatar Aug 13 '2010 12:08 dbrettschneider

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, yserá negativo. Si mueve el dedo hacia la izquierda de la vista, xserá 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?
Suragch avatar Sep 20 '2016 08:09 Suragch
@Override
    public boolean onTouch(View v, MotionEvent event) {
       float x = event.getX();
       float y = event.getY();
       return true;
    }
Sephy avatar Aug 13 '2010 12:08 Sephy