2012-08-28 11 views
23

Estoy usando la biblioteca de soporte. Ahora, quiero tener un fragmento que se mueva desde abajo, moviéndose SOBRE el anterior.fragments, android: zAdjustment (orden z) y animaciones

Por esta utilizo esto para mantener el fragmento anterior (la que está siendo deslizado sobre) visible hasta que el nuevo fragmento es en su lugar:

<alpha xmlns:android="http://schemas.android.com/apk/res/android" 
    android:fromAlpha="1.0" android:toAlpha="1.0" 
    android:duration="2500" 
    android:zAdjustment="bottom" /> 

esta es la animación utilizada para el nuevo fragmento se deslice en la de abajo:

<set xmlns:android="http://schemas.android.com/apk/res/android"> 
<translate android:fromYDelta="100%p" android:toYDelta="0" 
     android:duration="@android:integer/config_mediumAnimTime" 
     android:zAdjustment="top"/> 

he puesto el ajuste de Z a parte inferior y superior para los dos, pero aún así la animación 'inferior' sigue siendo en la parte superior del nuevo fragmento ! He puesto la duración en 2500 para la prueba y se mantiene en la cima durante todo el tiempo.

¿zAdjustment no funciona para las animaciones de fragmentos?

+0

¿Has encontrado alguna forma de forzar al fragmento anterior a aparecer debajo del fragmento que aparece? –

+0

No estoy seguro de qué hice para que esto funcione. Debería tener que verificar mi código pero no es posible en este momento. – Boy

+1

¿En dónde puedes ajustar de alguna manera el índice z en animaciones de fragmentos? Será muy útil si comparte con nosotros. – cprcrack

Respuesta

9

De acuerdo con this google group thread Z el ajuste solo funciona para animaciones de ventanas.

"El ajuste Z solo funciona para animaciones de ventanas. Pensé que esto estaba documentado, pero aparentemente no". - Dianne Hackborn (ingeniero de framework Android)

+9

¿Cuáles son algunas soluciones posibles? – Marchy

3

También me he quedado con ese problema. Así que en lugar de utilizar transaction.replace(containerId, newFragment) He creado dos contenedores para los fragmentos y ahora mi código parece que éste

Agregar primer fragmento:

transaction.add(containerId1, firstFragment).commit(); 

Añadir segundo fragmento con la animación sobre el primero:

findViewById(containerId2).bringToFront(); 
transaction.setCustomAnimations(R.anim.slide_in_up, 
R.anim.stay).remove(oldFragment).add(containerId2, newFragment).commit() 
Cuestiones relacionadas