ho trovato, è bug di Android, quando si utilizza
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
in tema di attività.
Ma è necessario impostare il colore sulla barra di stato, quindi non è stato possibile impostarlo su falso. In caso contrario, è possibile impostare questo flag a runtime via
if (Build.VERSION.SDK_INT >= 21) {
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
}
Inoltre è possibile cancellare questo flag tramite il metodo Window
s' clearFlags
.
Quindi cancello questo flag prima di avviare l'animazione di transizione nella seconda attività e aggiungere questo flag dopo la transizione terminata. Ha bisogno di fare solo in attività chiamata.
UPDATE
ho trovato una soluzione migliore. In Android, tutte le viste di elementi condivise si basano sulla vista del decoro. Lo sfondo della barra di navigazione di solito si trova in cima alla vista dell'arredamento. Ma nel tempo di transizione gli elementi condivisi sono più elevati.
E 'possibile aggiungere navigationBarBackground
per condividere elementi, che è accessibile da getWindow().getDecorView().findViewById(android.R.id.navigationBarBackground)
. Per questo è necessario aggiungerlo agli elementi condivisi nell'attività di chiamata e aggiungerlo agli elementi condivisi nell'attività chiamata.
C'è un problema. È necessario attendere quando la vista dello sfondo di navigazione sarà allegata alla vista del decoro. Questo è l'esempio di come risolvere questo problema in onCreate()
metodo chiamato attività
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);
}
});
Questo video è privato. :): P –
Penso che tu conosca la risposta prima di pubblicare la domanda. –
Grazie per l'avviso. Ho cambiato l'accesso al video. –