Ändern der z-Reihenfolge von Fragmenten während der laufenden FragmentTransaction

9

Gibt es eine Möglichkeit, die z-Reihenfolge zu ändern, in der Fragmente während einer laufenden FragmentTransaction angezeigt werden? Ich habe eine Animation, bei der sich beide Fragmente überlappen und ich würde gerne das Fragment haben, das von rechts nach rechts gleitet (das zweite Fragment), das unter dem anderen, das nach links gleitet, angezeigt wird. Im Moment werden sie während der Transaktion in umgekehrter Reihenfolge angezeigt.

Hier ist Code einer meiner Animationen:

%Vor%

Und hier ist der Code der Transaktion

%Vor%

Ich möchte, dass fragmentToHide unter fragmentToShow erscheint. Ich habe versucht, mit der android:zAdjustment Eigenschaft anzugehen, aber da es anscheinend nur für Fensteranimationen funktioniert, hat es einfach nicht für mich gearbeitet.

    
simekadam 04.02.2014, 18:23
quelle

2 Antworten

2

Ich hatte dieses Problem auch und die einzige Problemumgehung, die ich finden konnte, ist, ein anderes FrameLayout direkt unter demjenigen zu platzieren, das das aktuelle Fragment enthält. Dann übertrage ich mein neues Fragment in das alternative FrameLayout (das eine höhere z-Anordnung als das darunter liegende FrameLayout hat) und entferne das alte Fragment aus dem ursprünglichen FrameLayout in derselben Transaktion. Etwas wie das:

%Vor%

Ja, ich weiß, dass dies der Hierarchie eine zusätzliche Ansicht hinzufügt, aber die Baumtiefe nicht erhöht. Für eine zusätzliche Leistungssteigerung überschreibe ich onCreateAnimator in meinen Fragmenten, um die Animation auf die Hardwareebene auszulagern, so:

%Vor%

Und das ist LayerEnablingAnimatorListener:

%Vor%     
John Busby 07.05.2015 15:44
quelle
0

Verwenden Sie ViewCompat.setTranslationZ() und das folgende in Ihrem Netzfragment

%Vor%

Der Standardwert trasnlationZ ist 0.

    
Cody 18.07.2017 04:19
quelle