Ich verwende show / hide, um ein Fragment anzuzeigen, das einen Teil des Bildschirms einnimmt. Aus irgendeinem Grund wird beim Abspielen des Fragments die slide_in_left
-Animation abgespielt, aber wenn das Fragment ausgeblendet wird, gibt es keine Animation, das Fragment verschwindet einfach. Ich habe versucht, die slide_in_left
-Animation für exit
und enter
zu verwenden, das hat nicht geholfen. Wenn der Code in das Support-Paket geschrieben wird, wird die Animation erstellt und der Code für die Anzeige wird ausgeführt. (Ich habe den .hide
-Aufruf verfolgt)
Nur für den Fall, hier ist das XML für die slide_out_left
Animation
Bearbeiten:
Es ist möglich, dass das Problem damit zu tun hat, dass my_fragment
die Bildschirmbreite mit einem anderen Fragment teilt, das eine Webansicht enthält. Wenn .show für my_fragment ausgeführt wird, wird es sichtbar und teilt Speicherplatz innerhalb eines horizontalen linearen Layouts (wie viel Bildschirmbreite jedes der beiden Fragmente benötigt wird, wird durch den Gewichtsparameter bestimmt).
Persönlich für mich ist das ein Fehler in der zPosition für Fragment Animationen.
Was Sie sehen, ist, dass das neue Fragment "erscheint", weil das neue Fragment unterhalb des aktuellen Fragments hängt.
Wenn Sie also versuchen, ein Fragment 'Over the top' eines vorhandenen Fragments zu animieren, scheint es so, als würde nichts passieren, dann erscheint das neue einfach.
Ich habe viele Arbeitsumgebungen ausprobiert, mit zPosition gespielt (betrifft nur Windows nicht Layouts, also keinen Effekt auf Fragmente), onAnimationCreate()
bringt das Root-Layout nach vorne oder sogar beim Starten und Stoppen der Animation ... scheint nichts zu tun .
Also, zu diesem Zeitpunkt, ohne eine vollständige benutzerdefinierte Animation für Fragmentübergänge zu schreiben, sind sie im Moment ein bisschen fehlerhaft.
Vielleicht musst du damit spielen. .add(Fragment)
wartet darauf, dass es hinzugefügt wird, dann ruft .remove(Fragment)
das alte Fragment auf, so dass das neue Fragment physisch über dem vorhandenen Fragment platziert wird.
Ich denke, es hatte die gleiche Situation, die sich ergibt:
Ich habe N Fragmente und wollte eine benutzerdefinierte Animation haben, aber ich wollte die Fragmente nicht neu laden, also war add
und remove
oder replace
keine Lösung und mit show
/ hide
Ich konnte die Animation nicht zwischen zwei Fragmenten synchronisieren.
Um es zu beheben, musste ich ein FrameLayout für jedes Fragment verwenden.
Hier der Code.
%Vor%Um zu steuern, welches Fragment angezeigt werden soll:
%Vor% Der Schlüssel befindet sich in bringToFront
Ich hoffe, es war hilfreich!
Tags und Links android android-fragments android-animation fragmenttransaction