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?
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