PDA

Ver la Versión Completa : ImageView evento al pulsar


ico87
04/08/12, 13:14:11
Hola

Bueno pues necesito saber para una aplicación como puedo lanzar un método al pulsar un imageView y además para el procesamiento del metodo necesito saber las coordenadas XY en las que he pulsado el imageView, pero en principio no tengo ni idea de como hacerlo.

Saludos

kriogeN
04/08/12, 15:36:56
Con un OnTouchListener, el código sería más o menos así:

img.setOnTouchListener(new OnTouchListener() {
float x,y;
public boolean onTouch(View b, MotionEvent arg1) {
if( arg1.getAction() == MotionEvent.ACTION_DOWN) {
{
x = arg1.getX();
y = arg1.getY();
}

ico87
09/08/12, 14:07:46
perfecto, muchisimas gracias.

ico87
15/08/12, 00:55:28
Ahora necesito lo mismo pero al arrastrar en vez de al pulsar en el ImageView y necesito conocer donde pulso primero y donde acabo al arrastrar, imagino que es algo parecido al evento de tocar, pero no se como buscar como se hace.
Saludos

Arasthel
15/08/12, 13:34:29
Puedes modificar el código anterior:


img.setOnTouchListener(new OnTouchListener() {
float desdeX,desdeY,hastaX, hastaY;
public boolean onTouch(View b, MotionEvent arg1) {
if( arg1.getAction() == MotionEvent.ACTION_DOWN) {
desdeX = arg1.getX();
desdeY = arg1.getY();
} else if(arg1.etAction() == MotionEvent.ACTION_UP) {
// este evento se usa para buscar cuándo se ha dejado de pulsar
hastaX = arg1.getX();
hastaY = arg1.getY();
}
}
}


En cuanto al efecto de arrastrar el ImageView no sé exactamente cómo hacerlo, la verdad. Si alguien diese un ejemplo me sería útil a mí también.

Un saludo.

ico87
16/08/12, 17:52:07
En cuanto al efecto, ¿te refieres a que con tu código puedes calcularlo, pero no se ve que la imagen haya sido arrastrada?

kriogeN
16/08/12, 18:52:47
En cuanto al efecto, ¿te refieres a que con tu código puedes calcularlo, pero no se ve que la imagen haya sido arrastrada?

Si, con ese código no puedes saber que el dedo se está moviendo, sólo donde lo pulssas y donde lo sueltas.

Para ver el efecto de "arrastrado" tendrás que controlar también el caso MotionEvent.ACTION_MOVE.

ico87
18/08/12, 13:08:44
Estoy probando este codigo y no me funciona, al dejar de pulsar no entra en el if del ACTION_UP, ¿no habra algo mal?

Puedes modificar el código anterior:


img.setOnTouchListener(new OnTouchListener() {
float desdeX,desdeY,hastaX, hastaY;
public boolean onTouch(View b, MotionEvent arg1) {
if( arg1.getAction() == MotionEvent.ACTION_DOWN) {
desdeX = arg1.getX();
desdeY = arg1.getY();
} else if(arg1.etAction() == MotionEvent.ACTION_UP) {
// este evento se usa para buscar cuándo se ha dejado de pulsar
hastaX = arg1.getX();
hastaY = arg1.getY();
}
}
}


En cuanto al efecto de arrastrar el ImageView no sé exactamente cómo hacerlo, la verdad. Si alguien diese un ejemplo me sería útil a mí también.

Un saludo.

mocelet
18/08/12, 18:02:03
Si no devuelves true en el onTouch no te va a avisar de ningún evento posterior al ACTION_DOWN.