Um den Übergang zwischen Fragmenten zu animieren oder um das Ein- oder Ausblenden eines Fragments zu animieren, verwenden Sie das Fragment Manager
, um ein Fragment zu erstellen Fragment Transaction
.
Innerhalb jeder Fragmenttransaktion können Sie In- und Out-Animationen angeben, die zum Ein- und Ausblenden verwendet werden (oder beides, wenn Ersetzen verwendet wird).
Der folgende Code zeigt, wie Sie ein Fragment ersetzen würden, indem Sie ein Fragment herausschieben und das andere an seine Stelle schieben.
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_right);
DetailsFragment newFragment = DetailsFragment.newInstance();
ft.replace(R.id.details_fragment_container, newFragment, "detailFragment");
// Start the animated transition.
ft.commit();
Um dasselbe zu erreichen, indem Sie ein Fragment verstecken oder anzeigen, das Sie einfach aufrufen ft.show
oder ft.hide
das Fragment übergeben, das Sie anzeigen bzw. ausblenden möchten.
Als Referenz würden die XML-Animationsdefinitionen das objectAnimator
Tag verwenden. Ein Beispiel für slide_in_left könnte ungefähr so aussehen:
<?xml version="1.0" encoding="utf-8"?>
<set>
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
android:propertyName="x"
android:valueType="floatType"
android:valueFrom="-1280"
android:valueTo="0"
android:duration="500"/>
</set>
Wenn Sie die Support-Bibliothek nicht verwenden müssen, sehen Sie sich die Antwort von Roman an .
Wenn Sie jedoch die Support-Bibliothek verwenden möchten, müssen Sie das alte Animationsframework wie unten beschrieben verwenden.
Nachdem ich die Antworten von Reto und Blindstuff konsultiert habe, habe ich den folgenden Code zum Laufen gebracht .
Die Fragmente scheinen von rechts nach links und nach links zu rutschen, wenn der Rücken gedrückt wird.
Die Reihenfolge ist wichtig. Dies bedeutet, dass Sie
setCustomAnimations()
vorher anrufen müssen,replace()
sonst wird die Animation nicht wirksam!Als nächstes müssen diese Dateien im Ordner res / anim abgelegt werden .
enter.xml :
exit.xml :
pop_enter.xml :
pop_exit.xml :
Die Dauer der Animationen kann auf einen der Standardwerte wie
@android:integer/config_shortAnimTime
oder eine andere Zahl geändert werden .Beachten Sie, dass die Zurückaktion nicht animiert wird, wenn zwischen dem Ersetzen von Fragmenten eine Konfigurationsänderung auftritt (z. B. Drehung). Dies ist ein dokumentierter Fehler , der in Version 20 der Support-Bibliothek noch vorhanden ist.
quelle
Ich würde dringend empfehlen, dies zu verwenden, anstatt die Animationsdatei zu erstellen, da dies eine viel bessere Lösung ist. Android Studio bietet bereits Standardeinstellungen, die
animation
Sie verwenden können, ohne eine neue XML-Datei zu erstellen. Die Namen der Animationen lauten android.R.anim.slide_in_left und android.R.anim.slide_out_right und können wie folgt verwendet werden:Ausgabe:
quelle
Meine modifizierte Unterstützungsbibliothek unterstützt die Verwendung von Ansichtsanimationen (dh
<translate>, <rotate>
) und Objektanimatoren (dh<objectAnimator>
) für Fragmentübergänge. Es wird mit NineOldAndroids implementiert . Weitere Informationen finden Sie in meiner Dokumentation zu Github.quelle
Ich brauche die Ansichtsrichtung:
Hier funktioniert für mich Code:
slide_in_right.xml
slide_out_left.xml
Transaktions-Code:
quelle
Ich löse das wie folgt
quelle