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 31/01/16, 11:41:54
Array

[xs_avatar]
modeag modeag no está en línea
Usuario muy activo
 
Fecha de registro: nov 2010
Mensajes: 1,471
Tu operador: Otra

Cambiar imagen justo al pulsar un boton

Hola, tengo un codigo que cuando pulso un boton muestra una imagen como que se esta pulsado mientras mantengo el dedo enn la pantalla, pero en cuanto levanto el dedo vuelve a su imagen original, el problema es que si es una pulsacion normal que no lo mantengo algo mas de tiempo no cambia la imagen, debe de ser porque se hace todo muy rapido y no se aprecia, alguien sabe como por muy rapido que le de a la pantalla con el dedo en el boton cambie la imagen aunque sea muy rapido?
Pongo el codigo:

button.setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
int action = MotionEventCompat.getActionMasked(event);
switch (action) {
case (MotionEvent.ACTION_DOWN):
((ImageButton)findViewById(R.id.button_shoot)).set BackgroundResource(R.drawable.boton_down);
if (!mCIR.hasIrEmitter()) {
Toast toast = Toast.makeText(getApplicationContext(), getString(R.string.error), Toast.LENGTH_SHORT);
toast.show();
} else {
(mando señal)
}
return true;
case (MotionEvent.ACTION_MOVE):
return true;
case (MotionEvent.ACTION_UP):
((ImageButton)findViewById(R.id.button_shoot)).set BackgroundResource(R.drawable.boton_up);
return true;
case (MotionEvent.ACTION_CANCEL):
return true;
case (MotionEvent.ACTION_OUTSIDE):
return true;
default:
return true;
}
}
});
Responder Con Cita


  #2  
Viejo 31/01/16, 13:33:15
Array

[xs_avatar]
kriogeN kriogeN no está en línea
Colaborador/a
· Votos compra/venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Tu operador: Vodafone
La operación setBackgroundResource es costosa (estamos hablando de milisegundos, pero para tu caso es lo suficientemente costosa) así que Android en esos casos tiende a saltar frames si hay una operación posterior que va a hacer también un cambio.

Puedes probar 2 cosas:

1) Cambiar el botón por un RelativeLayout, y poner dentro las 2 imágenes ya cargadas, tu operación lo que haría sería cambiar simplemente la visiblidad de las 2 imágenes. Debe ser una operación mucho más rápida, pero tampoco te aseguro que vaya a funcionar.

2) Usar un SurfaceView, ya que el pintado se realiza en otro hilo y no salta frames (salvo que tu lo programes). El SurfaceView es lo que se usa para cuando requieres de alta carga gráfica, por ejemplo juegos.
Responder Con Cita
Gracias de parte de:
  #3  
Viejo 31/01/16, 23:28:02
Array

[xs_avatar]
modeag modeag no está en línea
Usuario muy activo
 
Fecha de registro: nov 2010
Mensajes: 1,471
Tu operador: Otra

Como controlas kriogeN, muy buenas, había dejado de enredar con esto hace tiempo y he empezado otra vez y te he vuelto a ver por aquí, gracias voy a probar lo segundo
Responder Con Cita
Respuesta

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



Hora actual: 20:22:01 (GMT +1)



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

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