Desarrollo de Android, ¿cómo obtener coordenadas aproximadas?

Ok, entonces estoy creando una aplicación simple en una vista de superficie donde tengo un mapa de bits de una pelota que va desde la parte superior de la pantalla hasta la parte inferior. Una vez que llega al fondo, aparece en la parte superior nuevamente, donde comienza a caer nuevamente.

A continuación, traté de hacerlo de modo que cuando hiciera clic en la bola cuando estaba cayendo, volviera a la parte superior de la pantalla. Sin embargo, tengo un problema con esto porque no puedo hacer clic en él (porque es solo un píxel, creo). Configuré un onTouchListener en el getX() y getY() coordenadas del clic, y si las coordenadas x e y del clic son iguales a x e y de la posición actual de la pelota, entonces la pelota vuelve a la parte superior de la pantalla.

Aunque esto no funciona. Porque para poder hacer clic en la bola, tendría que hacer clic en el píxel central exacto en el que estaba la bola en ese momento. Así que mi pregunta es cómo digo: si el clic es cerca o aproximadamente igual a la posición actual de la bola y luego vuelve a la parte superior. Soy un novato con esto, así que si estoy haciendo preguntas tontas, me disculpo, estoy haciendo todo lo posible para aprender. Y muchas gracias por la ayuda. Lo aprecio.

preguntado el 10 de marzo de 12 a las 10:03

1 Respuestas

Debería funcionar para ti. Simplemente anule el método onTouch.

@Override
    public boolean onTouch(View v, MotionEvent me)
    {
        try
        {
            Thread.sleep(50);
        } catch (InterruptedException e)
        {
            e.printStackTrace();
        }
        switch (me.getAction())
        {
        case MotionEvent.ACTION_DOWN:
            x = me.getX();
            y = me.getY();
            break;
        case MotionEvent.ACTION_UP:
            x = me.getX();
            y = me.getY();
            break;
        case MotionEvent.ACTION_MOVE:
            x = me.getX();
            y = me.getY();
            break;
        case MotionEvent.ACTION_OUTSIDE:
            x = 100;
            y = 200;
            break;
        }
        return true;
    }

respondido 10 mar '12, 11:03

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.