Ich möchte ein Animation
für machen, wenn a View
seine Sichtbarkeit eingestellt bekommt GONE
. Anstatt nur zu verschwinden, View
sollte das "zusammenbrechen". Ich habe dies mit einem versucht, ScaleAnimation
aber dann View
ist der Zusammenbruch, aber das Layout ändert nur die Größe seines Speicherplatzes nach (oder vor) den Animation
Stopps (oder Starts).
Wie kann ich das Animation
so gestalten, dass beim Animieren die unteren View
s direkt unter dem Inhalt bleiben, anstatt ein Leerzeichen zu haben?
Antworten:
Es scheint keine einfache Möglichkeit zu geben, dies über die API zu tun, da die Animation nur die Rendermatrix der Ansicht ändert, nicht die tatsächliche Größe. Wir können jedoch einen negativen Spielraum festlegen, um LinearLayout zu täuschen, dass die Ansicht kleiner wird.
Daher würde ich empfehlen, eine eigene Animationsklasse basierend auf ScaleAnimation zu erstellen und die Methode "applyTransformation" zu überschreiben, um neue Ränder festzulegen und das Layout zu aktualisieren. So was...
Es gilt die übliche Einschränkung: Da wir eine geschützte Methode (applyTransformation) überschreiben, kann nicht garantiert werden, dass dies in zukünftigen Versionen von Android funktioniert.
quelle
0 -
in dermarginBottomToY
Berechnung entfernen musste, um das "Zusammenfallen" zum Laufen zu bringen (von Y = 0,0f bis Y = 1,0f) .MarginLayoutParams
anstatt ihn in einen bestimmtenLayoutParam
Typ umzuwandeln.Fügen Sie die Ansicht in ein Layout ein, wenn dies nicht der Fall ist, und legen Sie sie
android:animateLayoutChanges="true"
für dieses Layout fest.quelle
Ich habe die gleiche Technik verwendet, die Andy hier vorgestellt hat. Ich habe dafür meine eigene Animationsklasse geschrieben, die den Wert des Randes animiert und bewirkt, dass der Effekt des Elements verschwindet / erscheint. Es sieht aus wie das:
Ich habe ein vollständiges Beispiel, das in meinem Blog-Beitrag http://udinic.wordpress.com/2011/09/03/expanding-listview-items/ funktioniert.
quelle
Ich habe hier dieselbe Technik wie Andy verwendet und sie so verfeinert, dass sie ohne Störungen erweitert und reduziert werden kann, auch mit einer hier beschriebenen Technik: https://stackoverflow.com/a/11426510/1317564
quelle