2012-08-28 16 views
23

Używam biblioteki pomocniczej. Teraz chcę mieć fragment przesuwający się od dołu, poruszający się PRZED poprzednim.fragmenty, Android: zAdjustment (kolejność z) i animacje

Do tego wykorzystać do utrzymania poprzedniego fragment (taki, który jest przesuwany nad) widoczny aż nowy fragment jest na swoim miejscu:

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

to animacji stosuje się do nowego fragmentu suwliwego z dołu:

<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"/> 

włożyłam regulację oo na dole i na górze dla obu, ale nadal „dolny” animacja jest wciąż na szczycie nowego fragmentu ! W testach ustawiłem czas trwania na 2500 i pozostaje on na szczycie przez cały czas.

Czy funkcja zRozwój nie działa w przypadku animacji fragmentów?

+0

Czy znalazłeś jakiś sposób, aby zmusić poprzedni fragment do pojawienia się pod pojawiającym się fragmentem? –

+0

Nie jestem pewien, co zrobiłem, aby to zadziałało. Powinienem sprawdzić mój kod, ale nie jest to możliwe w tym momencie. – Boy

+1

Gdzie można w jakiś sposób dopasować indeks Z w animacjach fragmentów? Będzie bardzo pomocne, jeśli z nami podzielisz się. – cprcrack

Odpowiedz

9

Zgodnie z this dopasowanie wątku Z grupy Google działa tylko w przypadku animacji okien.

"Ustawienie Z działa tylko w animacjach okiennych. Myślałem, że jest to udokumentowane, ale najwyraźniej nie." - Dianne Hackborn (inżynier systemu Android):

+9

Więc jakie są niektóre możliwe obejścia? – Marchy

3

Utknąłem z tym problemem. Więc zamiast korzystania transaction.replace(containerId, newFragment) Utworzyłem dwa pojemniki na fragmenty i teraz mój kod wygląda ten

Dodaj pierwszego fragmentu:

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

Dodaj drugi fragment z animacji w ciągu pierwszego:

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