1

Durch Ausführen einer einfachen Folie auf der linken Seite der Animation für einkommendes und vorhandenes Fragment wird der Effekt des eintretenden Fragments erzeugt, das leicht mit dem Ausgangsfragment überlappt. Dies führt mich zu der Annahme, dass beide Transitionen nicht gleichzeitig ausgeführt werden. Irgendwelche Anhaltspunkte oder Bestätigung für dieses Verhalten?Fragment Eingabe- und Exit-Übergänge werden nicht gleichzeitig ausgeführt.

Der gewünschte Effekt ist, die Fragmente gleichzeitig ohne Überlappung nach links zu verschieben.

der Code:

Fragment current = ...; 
Fragment fragment = ...; 
Transition slideIn = TransitionInflater.from(this) 
    .inflateTransition(R.transition.fragment_indicator_enter) 
    .setDuration(300) 
    .setInterpolator(new LinearInterpolator()); 
fragment.setEnterTransition(slideIn); 

currentFragment.setExitTransition(TransitionInflater.from(this) 
    .inflateTransition(R.transition.fragment_indicator_exit) 
    .setDuration(300) 
    .setInterpolator(new LinearInterpolator())); 

getSupportFragmentManager() 
    .beginTransaction() 
    .replace(R.id.fragment_container, fragment) 
    .addToBackStack(null) 
    .commit(); 

Die einzige Lösung von weiß Es ist ein setStartDelay (30) für den eintretenden Übergang zu addieren. Aber komische Sache, ich habe verschiedene Übergänge für verschiedene Fragmente und die Startverzögerung muss anders sein, um den Effekt zu erzeugen, dass beide Fragmente gleichzeitig nach links gleiten.

Antwort

0

Der Effekt ist ein erwartetes Verhalten des Übergangs, da alle Ansichten im Layout zu einem anderen Zeitpunkt verschoben bewegen, alles zu vermeiden, wie ein Block eines gewisses natürliches Gefühl der Bewegung zu schaffen. Ich will diesen Blockeffekt absichtlich, also wird er gelöst, indem ein Ziel für den Übergang hinzugefügt wird, wobei dieses Ziel das FrameLayout ist, das die Ansichten des Fragments enthält.

fragment.setEnterTransition(new Slide(Gravity.RIGHT) 
        .addTarget(R.id.whole_content)); 
-1

Haben Sie versucht, die Animationen direkt in den Transaktionsaufruf zu platzieren?

getSupportFragmentManager() 
.setCustomAnimations(R.transition.fragment_indicator_enter, R.transition.fragment_indicator_exit) 
.beginTransaction() 
.replace(R.id.fragment_container, fragment) 
.addToBackStack(null) 
.commit(); 
+0

Danke für den Vorschlag, aber das ist in meinem Fall nicht gültig. Ich möchte Inhaltsübergänge (lollipop api) verwenden, was nicht genau dasselbe ist. Ich verwende benutzerdefinierte Übergänge, die unterschiedliche Effekte auf verschiedene Zielansichten anwenden. – juanmeanwhile

Verwandte Themen