Ich versuche, mich um das neue Activity
Transition
-Gerüst in Lollipop
zu kümmern.
Die Activity Transition funktioniert ziemlich geradlinig und es gibt einige grundlegende Informationen , aber die Fragment
Transition
ist undokumentiert und ich kann es nicht zur Arbeit bringen.
Ich habe diesen Anwendungsfall (sehr häufig in Android) ausprobiert:
Fall 1: ActA + FragA - & gt; ActB + FragB
sharedElement ist ein image in FragA
und FragB
. Ich kam nicht mit funktionierendem Code, also ging ich einen Schritt zurück und versuchte
Fall 2: ActA + FragA - & gt; ActB
mit einem sharedElement in FragA
und ActB
. Die Animation funktioniert nicht, ich kann nur sehen, dass wenn ich auf das Bild auf FragA klicke, das Bild verschwindet und nach der Dauer der Animation erscheint es in ActB. Freigegebene Ansichten außerhalb von FragA, aber innerhalb von ActA (zum Beispiel Toolbar
) werden korrekt animiert.
In diesem Fall ist sharedImage eine imageView in einer RecyclerView, könnte es sein, dass das XML-Tag android:transitionName="shared_icon"
im Layout-XML des Elements nicht funktioniert?
Das ist mein Thema:
%Vor%window_transition.xml:
%Vor%shared_element_transition.xml:
%Vor%Fragmentübergänge sollen zwischen Fragmenten in derselben Aktivität arbeiten. Wenn Sie zwei verschiedene Aktivitäten haben, ob Fragmente vorhanden sind oder nicht, verwenden Sie Aktivitätsübergänge. Fühlen Sie sich frei, alle Fragment Transition Eigenschaften zu ignorieren.
In deinem Fall 2 solltest du keine Probleme mit deinen Übergängen haben, wenn es richtig eingerichtet ist. Ich nehme an, dass Ihr Anwendungsthema nicht von android: Theme.Material stammt, Sie brauchen also noch eine Eigenschaft:
%Vor% MitwindowContentTransitions können Sie einen TransitionManager verwenden, um zwischen setContentView Ihres Fensters zu animieren.
Wenn Sie in Ihrer gestarteten Aktivität ein Fragment haben, wie in Fall 1, müssen Sie möglicherweise @AlexLockwood vorschlagen: postponeEnterTransition. Sie sollten jedoch auch Folgendes verwenden können:
%Vor%in Ihrem onCreate (), um zu erzwingen, dass das Fragment sofort geladen wird, damit der Aktivitätsübergang alle Ansichten in Ihrem Layout anzeigt.