Animación de altura del contenedor LinearLayout con ValueAnimator
Tengo un LinearLayout que uso como un contenedor para algunos botones y vistas de texto que me gustaría animar la altura para dar una impresión de que el diseño se desliza hacia abajo cuando el usuario presiona el botón "mostrar".
He establecido LinearLayout en layout_height = "0dp" y visibilidad = "ido" en mi xml. Luego deseo configurarlo para que sea visible y la altura que sea necesaria para envolver el contenido. En este momento tengo problemas incluso para animarlo, no importa la altura del contenido de la envoltura.
Aquí está mi método para animar:
private void toggle(final LinearLayout v) {
v.setVisibility(View.VISIBLE);
ValueAnimator va = ValueAnimator.ofInt(0, 300);
va.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
public void onAnimationUpdate(ValueAnimator animation) {
Integer value = (Integer) animation.getAnimatedValue();
v.getLayoutParams().height = value.intValue();
v.invalidate();
}
});
va.start();
}
¿Quizás el problema es cómo estoy configurando la altura de LinearLayout? ¿O estoy malinterpretando la función del ValueAnimator? He echado un vistazo a las publicaciones del blog de Chet Haase, pero no contienen ningún ejemplo específico de animación de altura. Tampoco he podido encontrar y buenos ejemplos de cómo trabajar con animaciones de altura utilizando API's de 3.0+. Me encantaría un poco de ayuda en esto, gracias!