Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android

Respuesta
 
Herramientas
  #1  
Viejo 05/02/13, 12:41:15
Array

[xs_avatar]
pablogarcia013 pablogarcia013 no está en línea
Miembro del foro
 
Fecha de registro: ene 2013
Localización: Madrid
Mensajes: 148
Modelo de smartphone: Samgung Galaxy s2
Tu operador: Orange
Pulsacion Larga

Buenas!

Estoy teniendo problemas con "onLongClick" a ver si me podeis echar un cable.

Tengo una serie de imagenes (Bitmap) sobre un canvas, este canvas tiene implementado onTouchEvent de manera que si pulso encima de la imagen y la muevo esta se mueve, Lo que me gustaría hacer ahora es que si dejo el dedo encima de la imagen un par de segundos o los que sean (una pulsación larga) me abra un menu, este menu ya lo tengo implementado, solo me queda saber como puedo hacer que la imagen detecte el evento de pulsación larga

Gracias por adelantado.
Responder Con Cita


  #2  
Viejo 05/02/13, 19:34:39
Array

[xs_avatar]
set92 set92 no está en línea
Miembro del foro
 
Fecha de registro: jun 2012
Mensajes: 468
Modelo de smartphone: samsung
Tu operador: Movistar
segun veo en este video simplemente es implementar un setonclicklistener y luego te aparece el metodo de onlongclick y ahi dentro tienes que poner que cosas quieres que se haga, en tu caso el menu.
__________________
Gracias a todos aquellos que no piensan en lo que cuesta diseñar/desarrollar una app, que no pagan ni 5 miseros euros y fastidian a todos los programadores, es un gran aliciente para todos los futuros programadores como yo
Responder Con Cita
  #3  
Viejo 06/02/13, 09:29:01
Array

[xs_avatar]
pablogarcia013 pablogarcia013 no está en línea
Miembro del foro
 
Fecha de registro: ene 2013
Localización: Madrid
Mensajes: 148
Modelo de smartphone: Samgung Galaxy s2
Tu operador: Orange
Gracias por la respuesta, pero a un Bitmap no me deja asignarle onLongClick es decir tengo esto:

Bitmap bmp=BitmapFactory.decodeResource(getResources(), R.drawable.img1);
que es lo que pinto en mi canvas.
y lo que no puedo hacer es bmp.setOnLongClick(....);

¿Alguna Idea?
Responder Con Cita
  #4  
Viejo 06/02/13, 10:43:22
Array

[xs_avatar]
set92 set92 no está en línea
Miembro del foro
 
Fecha de registro: jun 2012
Mensajes: 468
Modelo de smartphone: samsung
Tu operador: Movistar
Tienes razon, pues salvo que alguien te diga el modo correcto a mi solo se me ocurre ahora mismo comprobar que el usuario pulsa una X y una Y, y como me imagino que tu imagen estara dentro de un rectangulo para el tema de colisiones que uses el metodo rectangulo.contains(x, y); , donde x e y sean los valores que ha pulsado el usuario recojidos en el metodo de ontouchevent al pulsar, hasta aqui seria una pulsacion normal, y para una pulsacion larga seria hacerle un tipo contador y que si mantiene pulsado 3 segundos le aparece el menu.

El tema es el contador que no se muy bien como podrias hacerlo pero creo que long time = System.currentTimeMillis(); te devuelve el tiempo actual en milisegundos, y si haces un if al de un rato volviendo a cojer la ahora actual y restandosela a la anterior y que cuando sea 3000 te aparezca el menu, algo asi no deberia funcionar? Aun asi haber si viene alguien que sepa como funciona el onlongclick aunque no se si funcionara si la clase no hereda de activity o view
__________________
Gracias a todos aquellos que no piensan en lo que cuesta diseñar/desarrollar una app, que no pagan ni 5 miseros euros y fastidian a todos los programadores, es un gran aliciente para todos los futuros programadores como yo
Responder Con Cita
  #5  
Viejo 13/02/13, 10:22:00
Array

[xs_avatar]
pablogarcia013 pablogarcia013 no está en línea
Miembro del foro
 
Fecha de registro: ene 2013
Localización: Madrid
Mensajes: 148
Modelo de smartphone: Samgung Galaxy s2
Tu operador: Orange
No he tenido tiempo para probarlo hasta ahora y si que me sirve, pero me funciona a medias,
tengo lo siguiente:
Código:
case MotionEvent.ACTION_DOWN:
Timer timer=new Timer();
      timer.schedule(new TimerTask(){
	public void run(){
	  ti=ti+1;    
	}
     },1,10000);
     if(this.ti>=1){
      	 this.mostrarMenuIzq();
}
break;
pero esto no me lo muestra, si pongo en el ACTION_UP el if(this.ti>=2).... si me lo muestra cuando recibe el evento de levantar el dedo. alguna idea??

Gracias!
Responder Con Cita
  #6  
Viejo 15/02/13, 12:31:02
Array

[xs_avatar]
set92 set92 no está en línea
Miembro del foro
 
Fecha de registro: jun 2012
Mensajes: 468
Modelo de smartphone: samsung
Tu operador: Movistar
Pues nunca lo he llegado a hacer pero la logica me dice que solo entra en ese switch/if una sola vez, la vez que pulsas, y como la primera vez que pulsas es cuando se pone en ejecuccion el contador entonces al pulsar tu ya no hace mas porque ya ha entrado una vez, ha puesto en marcha el contador, ha mirado si el condicional era true, y como era false ha seguido para delante y no se ha vuelto ha ejecutar ese switch, me imagino que en la segunda pulsacion igual si que entraria en el if y por lo tanto mostraria el menu.

Soluciones...pues el timer que empiece fuera del action_down, es decir en el ontouchevent() pero sin estar dentro del switch y sino la parte del if que sea mayor que 1 ponla fuera del ontouch que igual esta hasta mejor, lo unico que como tiene que estar todo el rato comprobando si se ha cumplido no se en que metodo lo podrias poner...se me ocurre hacer un hilo y con un bucle infinito que lo este comprobando todo el rato pero esto en tema de recursos no es muy correcto tener un hilo solo para eso.
__________________
Gracias a todos aquellos que no piensan en lo que cuesta diseñar/desarrollar una app, que no pagan ni 5 miseros euros y fastidian a todos los programadores, es un gran aliciente para todos los futuros programadores como yo
Responder Con Cita
Respuesta

Estás aquí
Regresar   Portal | Indice > Todo sobre Android > Programación y Desarrollo para Android

Herramientas


Hora actual: 16:38:17 (GMT +2)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /