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


 
Herramientas
  #1  
Viejo 31/01/16, 11:41:54
Avatar de modeag
modeag modeag no está en línea
Usuario muy activo
Mensajes: 1,471
 
Fecha de registro: nov 2010
Mensajes: 1,471
Tu operador: Otra
Mencionado: 4 comentarios
Tagged: 0 hilos
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
Avatar de kriogeN
kriogeN kriogeN no está en línea
Colaborador/a
Mensajes: 4,637
Compra y venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Versión de ROM: CM13 - CM 11
Tu operador: Vodafone
Mencionado: 60 comentarios
Tagged: 3 hilos
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
Avatar de modeag
modeag modeag no está en línea
Usuario muy activo
Mensajes: 1,471
 
Fecha de registro: nov 2010
Mensajes: 1,471
Tu operador: Otra
Mencionado: 4 comentarios
Tagged: 0 hilos
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   HTCMania > Todo sobre Android > Programación y Desarrollo para Android


Reglas de Mensajes
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Las caritas están On
Código [IMG] está On
Código HTML está Off

Saltar a Foro



Hora actual: 16:56:28 (GMT +1)

Cookies settings
Powered by vBulletin™
Copyright © vBulletin Solutions, Inc. All rights reserved.
 
HTCMania: líderes desde el 2007