¿Cómo puedo excluir ActionBar cuando las transiciones entre Actividades en Android 5.0
En Android 5.0 Lollipop,
Tengo dos actividades A y B. La actividad B tiene una transición slie entrar desde la parte inferior con una superposición ActionBar, pero cuando B muestra, la ActionBar también se desliza de abajo hacia arriba.
- Webview falla en la transición de elementos compartidos en lollipop
- Transición de elemento compartido de Android: la vista de héroe se dibuja delante de otro
- Uso de transiciones de actividad de SharedElement con una vista personalizada
- La transición de elementos compartidos funciona con FragmentTransaction.replace () pero no funciona con FragmentTransaction.add ()
- SharedElment transition usando fragmentos que no están en transición
¿Cómo puedo evitar que la barra de acción de la transición de diapositivas. ¿La barra de acción del sistema tiene un identificador que puedo agregar al objetivo de exclusión?
¡Gracias!
- Transición de elementos compartidos en CardView con radio
- La transición de elementos compartidos no tiene el comportamiento esperado
- Android compartió elementos "héroe" transiciones cuando se oscurece
- Transición de elemento compartido (primer plano / fondo)
- Es posible hacer la transición de elementos compartidos de fragmento a ViewPager dentro de viewpager
- Las transiciones de elementos compartidos pasan por la barra de navegación
- Transición de elementos compartidos con actividad de diálogo
- Transición de elementos compartidos de Android: transformación de un ImageView de un círculo a un rectángulo y viceversa
Si está utilizando la biblioteca AppCompat v7, es fácil:
View decor = getWindow().getDecorView(); int actionBarId = R.id.action_bar_container; enterTransition.excludeTarget(decor.findViewById(actionBarId), true);
Desafortunadamente, el ID de la vista de contenedor de la barra de acción no forma parte de la API pública, por lo que si no está utilizando la biblioteca AppCompat v7 (es decir, está utilizando las bibliotecas de framework oficiales) tendrá que solucionarlo utilizando el siguiente código para recuperar El ID en su lugar:
int actionBarId = getResources().getIdentifier("action_bar_container", "id", "android");
Tenga en cuenta que este código se interrumpirá si cambia el nombre de ID del contenedor de la barra de acción en una futura versión de Android. Dudo que cambie …
Vea este post para obtener alguna otra información relacionada.
Mi solución es extender el estilo con este args:
<item name="android:windowActivityTransitions">true</item> <item name="android:windowContentTransitions">true</item> <item name="android:windowEnterTransition">@transition/slide</item> <item name="android:windowExitTransition">@transition/slide</item> <item name="android:windowAllowEnterTransitionOverlap">true</item> <item name="android:windowAllowReturnTransitionOverlap">true</item> <item name="android:windowSharedElementEnterTransition">@transition/enter</item> <item name="android:windowSharedElementExitTransition">@transition/enter</item>
Esto aquí es mi res/transition/slide.xml
:
<?xml version="1.0" encoding="utf-8"?> <slide xmlns:android="http://schemas.android.com/apk/res/android" android:slideEdge="bottom"> <targets> <target android:excludeId="@android:id/statusBarBackground"/> <target android:excludeId="@android:id/navigationBarBackground"/> </targets> </slide>
Esto aquí es mi res/transition/enter.xml
:
<?xml version="1.0" encoding="utf-8"?> <transitionSet xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" tools:targetSdkVersion="19" android:transitionOrdering="sequential"> <targets> <target android:excludeId="@id/action_bar_container"/> <target android:excludeId="@android:id/statusBarBackground"/> </targets> <changeBounds/> <changeTransform/> <changeClipBounds/> <changeImageTransform/> </transitionSet>
Puedes jugar con esas transiciones a tu gusto, lo más importante son los objetivos excluidos.
- ¿Cómo establezco correctamente un punto de interrupción de excepción en Android Studio?
- Compilar el proyecto de Android en el sistema de integración continua Hudson?