parpadea pantalla laptop inicia constantemente celular cayo android material-design shared-element-transition

android - laptop - mi pantalla parpadea windows 8



Pantalla parpadeante en la transiciĆ³n de imagen entre actividades (11)

Agregue esto en su style.xml. Esto evita que la pantalla parpadee

<item name="android:windowIsTranslucent">true</item>

Implementé una transición de imagen entre dos actividades usando los nuevos elementos compartidos de lollipop. Está funcionando, pero aparece un extraño parpadeo blanco en toda la pantalla durante la transición y no puedo encontrar cómo deshacerme de él. Aquí hay un ejemplo:

Así es como se lanza la segunda actividad

public static void launch( @NonNull Activity activity, @NonNull View transitionView, Game game) { ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation( activity, transitionView, game.gameFullId); Intent intent = new Intent(activity, ListImportationLoginActivity.class); intent.putExtra(INTENT_EXTRA_GAME, retailer); ActivityCompat.startActivity(activity, intent, options.toBundle()); }

Luego en onCreate:

ViewCompat.setTransitionName(mLogoView, mGame.gameFullId);

Y el archivo del tema:

<resources> <style name="Theme.MyApp.NoActionBar" parent="Theme.MyApp.NoActionBar.Base"> <item name="android:windowContentTransitions">true</item> <item name="android:windowAllowEnterTransitionOverlap">true</item> <item name="android:windowAllowReturnTransitionOverlap">true</item> <item name="android:windowSharedElementEnterTransition">@android:transition/move</item> <item name="android:windowSharedElementExitTransition">@android:transition/move</item> </style> </resources>

Gracias por tu ayuda


Agregue estos códigos en onCreate de ambas actividades donde realiza elementos de transición

Fade fade = new Fade(); View decor = getWindow().getDecorView(); fade.excludeTarget(decor.findViewById(R.id.action_bar_container),true); fade.excludeTarget(android.R.id.statusBarBackground,true); fade.excludeTarget(android.R.id.navigationBarBackground,true); getWindow().setEnterTransition(fade); getWindow().setExitTransition(fade);

Esto excluirá la animación de la barra de navegación y estado, así que no más parpadeos


Algunas respuestas útiles anteriores. Hasta donde entiendo, esto es causado por la superposición de la transición de actividad. Para superar este problema, he utilizado los siguientes valores en los métodos onCreate() de ambas actividades:

getWindow().setAllowEnterTransitionOverlap(false); getWindow().setAllowReturnTransitionOverlap(false);


El "parpadeo blanco" que está viendo es el resultado de las dos actividades de animación alfa dentro y fuera durante la transición: cuando la actividad A comienza la actividad B , la actividad A desvanece y la actividad B desvanece.

Si desea evitar que la barra de estado y / o la barra de navegación se desvanezcan durante la transición (y así reducir un poco el efecto de "parpadeo"), puede mirar esta publicación .


En la actividad existente, llame a getWindow().setExitTransition(null);

En la actividad de entrada, llame a getWindow().setEnterTransition(null);

Evitará el desvanecimiento de la actividad de salida y el desvanecimiento de la actividad de entrada, lo que elimina el aparente efecto de parpadeo.


En mi situación, la segunda actividad no tenía una barra de estado definida en el tema de la actividad con esta etiqueta.

<item name="android:windowFullscreen">true</item>

Como no era obligatorio ocultar la barra de estado en modo vertical, eliminé esta etiqueta y oculto / muestro manualmente la barra de estado cuando era necesario y el parpadeo desapareció.


Hacer algún método en ayuda como

public static Transition makeEnterTransition() { Transition fade = new Fade(); fade.excludeTarget(android.R.id.navigationBarBackground, true); fade.excludeTarget(android.R.id.statusBarBackground, true); return fade; }

Ejecútelo en la actividad que está comenzando así

getWindow().setEnterTransition(TransitionUtils.makeEnterTransition());

Fuente https://github.com/alexjlockwood/custom-lollipop-transitions/


He tenido problemas de parpadeo similares y probé muchos de los ejemplos mencionados aquí, pero para mí no resolvió los problemas. Lo que funcionó para mí fue cambiar el fondo de la ventana para el segundo tema de actividad a transparente. (@Webdma usó negro, pero en mi caso eso hizo que la pantalla parpadeara en negro en lugar de blanco)

<item name="android:windowBackground">@android:color/transparent</item>


Los elementos se desvanecen dentro y fuera, a menos que especifique explícitamente que son los mismos en ambas actividades. Eso incluye el estado y la barra de navegación.

En su caso particular, agregaría la barra de herramientas y estas dos vistas a la lista de elementos compartidos:

List<Pair> viewPairs = new ArrayList<>(); viewPairs.add(Pair.create(findViewById(android.R.id.statusBarBackground), Window.STATUS_BAR_BACKGROUND_TRANSITION_NAME)); viewPairs.add(Pair.create(findViewById(android.R.id.navigationBarBackground), Window.NAVIGATION_BAR_BACKGROUND_TRANSITION_NAME)); // Add your views... Pair[] array = new Pair[viewPairs.size()]; ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(getActivity(), viewPairs.toArray(array)).toBundle(); // ... ActivityCompat.startActivity(activity, intent, options.toBundle());


Resolví este problema cambiando el color de fondo de mi tema predeterminado, espero que esto pueda ayudar a alguien a ahorrar tiempo.

<item name="android:windowBackground">@color/black</item> <item name="android:colorBackground">@color/black</item>


Tuve un problema similar. Resolví los problemas de la barra de estado parpadeante y de la barra de navegación al excluirlos de la transición según la sugerencia de @ Alex, pero la pantalla seguía parpadeando al cambiar entre las actividades. Cuando eliminé el "terminar ();" declaración después de startActivity (); la pantalla dejó de parpadear. Mayo fue debido al cierre de la actividad de llamadas. Espero que esto ayude a alguien.