Ich versuche, den folgenden Effekt mit FragmentTransaction.setCustomAnimations zu erzielen.
- Fragment A wird angezeigt
- Ersetzen Sie Fragment A durch Fragment B. Fragment A sollte während des Austauschs sichtbar bleiben. Fragment B sollte von rechts hineingleiten. Fragment B sollte über die Oberseite von Fragment A gleiten.
Ich habe kein Problem damit, die Folie im Animations-Setup zu erhalten. Mein Problem ist, dass ich nicht herausfinden kann, wie Fragment A dort bleiben kann, wo es ist, und UNTER Fragment B sein kann, während die Folie in der Animation ausgeführt wird. Egal was ich mache, es scheint, dass Fragment A oben ist.
Wie kann ich das erreichen?
Hier ist der FragmentTransaction-Code:
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.setCustomAnimations(R.anim.slide_in_right, R.anim.nothing, R.anim.nothing,
R.anim.slide_out_right);
ft.replace(R.id.fragment_content, fragment, name);
ft.addToBackStack(name);
ft.commit();
Wie Sie sehen können, habe ich eine Animation R.anim.nothing für die "out" -Animation definiert, da ich eigentlich nicht möchte, dass Fragment A etwas anderes tut, als nur dort zu bleiben, wo es während der Transaktion ist.
Hier sind die Animationsressourcen:
slide_in_right.xml
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="@android:integer/config_mediumAnimTime"
android:fromXDelta="100%p"
android:toXDelta="0"
android:zAdjustment="top" />
nothing.xml
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="@android:integer/config_mediumAnimTime"
android:fromAlpha="1.0"
android:toAlpha="1.0"
android:zAdjustment="bottom" />