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.
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction transaction = fragmentManager.beginTransaction();
transaction.setCustomAnimations(R.anim.enter, R.anim.exit, R.anim.pop_enter, R.anim.pop_exit);
CustomFragment newCustomFragment = CustomFragment.newInstance();
transaction.replace(R.id.fragment_container, newCustomFragment );
transaction.addToBackStack(null);
transaction.commit();
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 :
<?xml version="1.0" encoding="utf-8"?>
<set>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXDelta="100%"
android:toXDelta="0"
android:interpolator="@android:anim/decelerate_interpolator"
android:duration="@android:integer/config_mediumAnimTime"/>
</set>
exit.xml :
<set>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXDelta="0"
android:toXDelta="-100%"
android:interpolator="@android:anim/accelerate_interpolator"
android:duration="@android:integer/config_mediumAnimTime"/>
</set>
pop_enter.xml :
<set>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXDelta="-100%"
android:toXDelta="0"
android:interpolator="@android:anim/decelerate_interpolator"
android:duration="@android:integer/config_mediumAnimTime"/>
</set>
pop_exit.xml :
<?xml version="1.0" encoding="utf-8"?>
<set>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXDelta="0"
android:toXDelta="100%"
android:interpolator="@android:anim/accelerate_interpolator"
android:duration="@android:integer/config_mediumAnimTime"/>
</set>
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.