2010-08-03 17 views
8

Tengo 2 ImageView s que traduzco de la parte superior de la pantalla a la inferior. estas vistas están infaltadas de xml y la animación se agrega desde el código java. La animación funciona a la perfección, pero el onClickListener que añadí en el código java no parece funcionar. Usé el atributo fillAfter de la animación para hacer que los iamges permanezcan en su llegada después de la traducción, pero ESTAS imágenes ya no se pueden hacer clic ... Sin embargo, su posición antes de la traducción sigue siendo clicable ... No puedo ver la lógica de esta. ¿Alguien podría darme algún consejo sobre eso?Traducir Imagen animada No se puede hacer clic después de la animación [Android]

+0

Ok, encontrado mi respuesta aquí: http://stackoverflow.com/questions/2125694/android-button-doesnt-respond-after-animation Ahora solo necesito configurar sus parámetros para obtener su posición correcta ... – Sephy

+0

Sin embargo, esto no parece ser compatible con setFillAfter. Agregué para eliminarlo para que funcione. – Sephy

+0

Tuve este problema, y ​​lo resolví después de algunas investigaciones. [Aquí se puede encontrar una respuesta] [1] [1]: http://stackoverflow.com/questions/18333269/how-to-set-button-clickable-while-animating-on -android/18509197 # 18509197 – SteBra

Respuesta

14

Esto se debe a que las animaciones solo afectan al dibujo del widget. Sin embargo, la ubicación real no se ve afectada, todavía está en la anterior.

Para superar este problema, es necesario actualizar los parámetros de diseño de la ImageView manualmente mediante la instalación de un detector de animación de la siguiente manera:

Animation.setAnimationListener(new AnimationListener() { 
     public void onAnimationStart(Animation arg0) { 

     } 

     public void onAnimationRepeat(Animation arg0) { 
      //TODO Auto-generated method stub 
     } 

     public void onAnimationEnd(Animation arg0) { 
      android.widget.LinearLayout.LayoutParams params = new LayoutParams(
      android.widget.LinearLayout.LayoutParams.FILL_PARENT, 
      android.widget.LinearLayout.LayoutParams.WRAP_CONTENT); 
      params.topMargin = addLocationButton.getTop()-100; 

      ImageView.setLayoutParams(params); 
     } 
     }); 
+1

No es bueno, porque después de la animación en onAnimationEnd, cuando la imagen obtiene la posición de "setLayoutParams (params);" entonces veo un parpadeo. Añado que es difícil establecer el topmargin a partir del porcentaje de la propiedad toYDelta – oscaroxy

+4

Para eliminar el parpadeo puede utilizar \t \t \t \t \t \t \t animation.reset(); .clearAnimation(); – slott

Cuestiones relacionadas