Aktivitäts- und Fragmentübergänge in Lollipop

8

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%     
David Corsalini 19.11.2014, 16:12
quelle

1 Antwort

6

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% Mit

windowContentTransitions 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.

    
George Mount 20.11.2014 00:24
quelle