Animation der Höhe des LinearLayout-Containers mit ValueAnimator
Ich habe ein LinearLayout, das ich als Container für einige Schaltflächen und Textansichten verwende, deren Höhe ich animieren möchte, um einen Eindruck vom Herunterrutschen des Layouts zu erhalten, wenn der Benutzer eine Schaltfläche "Anzeigen" drückt.
Ich habe das LinearLayout in meiner XML auf layout_height = "0dp" und visible = "gone" gesetzt. Ich möchte dann festlegen, dass es sichtbar ist und in welcher Höhe der Inhalt verpackt werden soll. Im Moment habe ich Probleme damit, es überhaupt zu animieren, ohne Rücksicht auf die Höhe des Umbruchinhalts.
Hier ist meine Methode zum Animieren:
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();
}
Vielleicht liegt das Problem darin, wie ich die Höhe des LinearLayouts einstelle? Oder verstehe ich die Funktion des ValueAnimators falsch? Ich habe mich in den Blogposts von Chet Haase umgesehen, aber sie enthalten keine speziellen Beispiele für Höhenanimationen. Ich konnte auch keine guten Beispiele finden, wie man mit Animationen von Größe unter Verwendung von APIs ab 3.0+ arbeitet. Würde mich über Hilfe freuen, danke!