ich fand, es ist Bug Android, wenn Sie
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
in der Aktivität des Themas verwenden.
Aber es muss Farbe zu Statusleiste setzen, also konnte ich es nicht auf false setzen. Andernfalls ist es möglich, diesen Flag in Runtime können Sie über
if (Build.VERSION.SDK_INT >= 21) {
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
}
Auch setzt diesen Flag löschen über Window
‚s clearFlags
Methode.
Dann lösche ich dieses Flag vor dem Start Transition Animation in der zweiten Aktivität und fügen Sie dieses Flag nach dem Übergang abgeschlossen. Es muss nur in angerufener Aktivität durchgeführt werden.
UPDATE
fand ich eine bessere Lösung. In Android werden alle freigegebenen Elementansichten oben auf der Dekoransicht angezeigt. Navigationsleiste Hintergrund lag in der Regel oben auf Dekor-Ansicht. Aber in der Übergangszeit liegen geteilte Elemente höher.
Es ist möglich, navigationBarBackground
Ansicht fügt Elemente zu teilen, die von getWindow().getDecorView().findViewById(android.R.id.navigationBarBackground)
zugänglich ist. Dazu müssen Sie sie zu den gemeinsam genutzten Elementen in der aufrufenden Aktivität hinzufügen und sie den freigegebenen Elementen in der aufgerufenen Aktivität hinzufügen.
Es gibt ein Problem. Sie müssen warten, wenn die Navigationshintergrundansicht an die Dekoransicht angehängt wird. Dies ist beispielsweise, wie dieses Problem in onCreate()
Methode löst in genannten Aktivität
ActivityCompat.postponeEnterTransition(this);
final View decorView = getWindow().getDecorView();
decorView.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
@Override
public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {
decorView.removeOnLayoutChangeListener(this);
View navigationBarBackground = getWindow().getDecorView().findViewById(android.R.id.navigationBarBackground);
if (navigationBarBackground != null) {
android.support.v4.view.ViewCompat.setTransitionName(navigationBarBackground, "navigationBg");
}
ActivityCompat.startPostponedEnterTransition(MyActivity.this);
}
});
Dieses Video ist privat. :): P –
Ich denke, Sie kennen die Antwort vor dem Posten der Frage. –
Vielen Dank für Ihre Nachricht. Ich habe den Zugriff auf das Video geändert. –