2011-06-30 9 views
20

Tengo un LinearLayout que quiero mostrar/ocultar haciendo clic en el enlace "más detalles". Lo hago llamandoAnimaciones y setVisibility

moreDetailsSection.setVisibility(View.VISIBLE); 

o

moreDetailsSection.setVisibility(View.GONE); 

para mostrar/ocultar. Esto funciona bien, pero quería agregar una animación que hace que los campos de diseño se deslicen muy bien, pero esto solo se ejecuta la primera vez que el campo se hace visible, si lo oculto y lo vuelvo a mostrar, el campo simplemente aparece de repente . Aquí está el código de animación (moreDetailsSection es la disposición en cuestión):

 AnimationSet set = new AnimationSet(true); 

     Animation animation = new AlphaAnimation(0.0f, 1.0f); 
     animation.setDuration(250); 
     set.addAnimation(animation); 

     animation = new TranslateAnimation(
      Animation.RELATIVE_TO_SELF, 1.0f, Animation.RELATIVE_TO_SELF, 0.0f, 
      Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF, 0.0f 
    ); 
     animation.setDuration(150); 
     set.addAnimation(animation); 

     LayoutAnimationController controller = 
      new LayoutAnimationController(set, 0.25f); 
     moreDetailsSection.setLayoutAnimation(controller); 

Algún consejo sobre cómo hacer que este ejecuta cada vez que muestro la disposición y no sólo la primera vez?

Respuesta

14

Supongo que la sección másDetails es INVISIBLE al principio. solo tiene que crear el objeto Animation y llamar al siguiente código cuando se hace clic en el enlace más detalles.

moreDetailsSection.startAnimation(animation); 
moreDetailsSection.setVisibility(View.VISIBLE); 
+0

Resulta que la vista no se puede medir, mientras que es la visibilidad es 'GONE', por lo que se necesita para establecer la visibilidad de 'VISIBLE' primero cuando usa una animación que necesita conocer los límites de la Vista. – milosmns

2

Puede utilizar esta línea en su vista para ese diseño:

android:animateLayoutChanges="true" 
+0

Para animaciones automáticas y simples, este es el camino a seguir. – milosmns

Cuestiones relacionadas