studio personalizado multiple fragments ejemplo crear con activities android animation drawerlayout material android-transitions

android - personalizado - ¿Cómo eliminar el retraso al abrir una actividad con un DrawerLayout?



navigation drawer con fragments (3)

Finalmente encontré una solución a esto. No sé por qué o cómo funcionó, pero sé que eliminó el retraso en las animaciones. Agregué un controlador en el OnCreate de la actividad que ejecutaría las otras declaraciones para configurar, es decir, agregar el fragmento inicial a la vista, después de 300 ms

Handler mHandler = new Handler(); mHandler.postDelayed(new Runnable() { @Override public void run() { switchFragment(); } }, 300);

Tengo una actividad con DrawerLayout pero cada vez que se abre hay una demora como una fracción de segundo donde la pantalla es blanca y luego se dibuja mi pantalla.

Esto sucede después de que termina la transición. Entonces parece que la transición de la animación de la pantalla está saltando.

Intenté poner esto en mi OnCreate después de vincular las vistas con ButterKnife pero no hizo nada.

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { postponeEnterTransition(); drawerLayout.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() { @TargetApi(Build.VERSION_CODES.LOLLIPOP) public boolean onPreDraw() { drawerLayout.getViewTreeObserver().removeOnPreDrawListener(this); startPostponedEnterTransition(); return true; } }); }

Sí, lo estoy optimizando para Lollipop, y para los dispositivos anteriores a Lollipop solo estoy usando overridePendingTransitions y funciona bien. Mi problema es solo en dispositivos Lollipop.

Por cierto, mis transiciones Enter y Exit son ambas fade_in_out definidas en xml y especificadas en styles

<style name="AppTheme" parent="Theme.AppCompat.Light"> <item name="colorAccent">@color/pink</item> <item name="windowActionBar">false</item> <item name="windowNoTitle">true</item> <item name="android:windowDrawsSystemBarBackgrounds">true</item> <item name="android:windowActivityTransitions">true</item> <item name="android:windowContentTransitions">true</item> <!-- specify enter and exit transitions --> <!-- options are: explode, slide, fade --> <item name="android:windowEnterTransition">@transition/fade_in_out_transition</item> <item name="android:windowExitTransition">@transition/fade_in_out_transition</item> <!-- specify shared element transitions --> <item name="android:windowSharedElementEnterTransition">@transition/change_clip_bounds</item> <item name="android:windowSharedElementExitTransition">@transition/change_clip_bounds</item> <item name="android:windowSoftInputMode">stateAlwaysHidden|adjustResize</item> </style>


Tal vez sea porque lollipop tiene una transición de diseño predeterminada en los elementos de la interfaz de usuario, ¿lo has intentado?

drawerLayout.setLayoutTransition(null)


Yo cambiaría tu transición de salida:

item name="android:windowExitTransition">@transition/fade_in_out_transition</item> item

Para volver a la ventana:

name="android:windowReturnTransition">@transition/fade_in_out_transition</item>

  1. Cuando utiliza la salida de la ventana, la visibilidad de la ventana se cambia a invisible brevemente antes de que comience la próxima transición.

Establece la Transición que se utilizará para mover las Vistas fuera de la escena cuando el fragmento se elimina, se oculta o se desprende cuando no se abre la pila trasera. Las vistas que salen son aquellas que son vistas normales o grupos de vistas que tienen isTransitionGroup () devuelven verdadero. Las transiciones típicas extenderán la visibilidad ya que la salida se rige por el cambio de visibilidad de VISIBLE a INVISIBLE. Si la transición es nula, las vistas no se verán afectadas.

setExitTransition

  1. Devolver la transición controla el cierre de la ventana, en lugar de salir y no afecta la visibilidad de la ventana.

Referencia a un recurso de Transición XML que define la Transición deseada utilizada para mover las Vistas fuera de la escena cuando la Ventana se está preparando para cerrar. Corresponde a setReturnTransition (android.transition.Transition).

android:windowReturnTransition

  1. También recomendaría volver a entrar para gestionar las pulsaciones de nuevo.

Referencia a un recurso de Transición XML que define la Transición deseada utilizada para mover las Vistas a la escena cuando regresa de una Actividad iniciada previamente. Corresponde a setReenterTransition (android.transition.Transition).

android:windowReenterTransition

Entendiendo las transiciones de elementos compartidos exit / reenter

  1. También puede establecer un valor bool que permita que las transiciones se superpongan, sin embargo, la superposición puede ser demasiado larga para lo que desea.

setAllowEnterTransitionOverlap(boolean)

  1. También me gustaría actualizar el lollipop a 5.0.1
    Hay errores en 5.0.0 que se han corregido en 5.0.1

Este blog de Linton Ye cubre en detalle los problemas relacionados con las transiciones y los errores de Lollipop.

Mi viaje a las transiciones de Lollipop: parte 1