2014-05-02 10 views
25

Zamieniam fragment na inny fragment. Chcę, aby pierwszy fragment zniknął z efektem zanikania, a drugi fragment pojawił się z efektem zanikania. Jak to się robi?Jak zastosować animację pojawiania się/zanikania podczas zastępowania fragmentu

+0

Czy wiesz, jak tworzyć animacje? – kabuto178

+0

tak w pliku xml i załaduj do aktywności –

+0

użyj ANIMATOR --- nie animacji! używaj android.R.ANIMATOR.fade_in, NIE używaj android.R.ANIM.fade_in - ma zachowanie BŁĘDY – user1269737

Odpowiedz

10

Kiedy Przekaż Fragment następnie zastosować animację jak:

FragmentManager manager = getSupportFragmentManager(); 
FragmentTransaction ft = manager.beginTransaction(); 

ft.setCustomAnimations(R.anim.fade_in, 
       R.anim.fade_out); 
ft.replace(R.id.realtabcontent, fragment); 
ft.commit(); 

i Kiedy pop Fragment następnie zastosować animację jak:

FragmentManager manager = getSupportFragmentManager(); 
FragmentTransaction ft = manager.beginTransaction(); 
ft.setCustomAnimations(R.anim.fade_out, R.anim.fade_in); 

ft.replace(R.id.realtabcontent, fragment);  
ft.commit(); 

nadzieję, że to działa dla Ciebie.

Aktualizacja: Aby uzyskać więcej informacji, przejdź do

  1. http://android-er.blogspot.in/2013/04/implement-animation-in.html
  2. Animate the transition between fragments
+0

może dać kod pliku xml, ponieważ nie działa w moim przypadku –

+0

@QadeerHussaincheck moja aktualizacja –

+0

dobrze działa dla ale chcę, gdy pierwsza klatka zniknie, a potem zniknie po jakimś czasie –

33

z dodatkiem do @MD kod

FragmentManager manager = getSupportFragmentManager(); 
FragmentTransaction ft = manager.beginTransaction(); 

ft.setCustomAnimations(R.anim.fade_in, 
       R.anim.fade_out); 
ft.replace(R.id.realtabcontent, fragment); 
ft.commit(); 

i Kiedy pop Fragment następnie zastosować animacja jak:

FragmentManager manager = getSupportFragmentManager(); 
FragmentTransaction ft = manager.beginTransaction(); 
ft.setCustomAnimations(R.anim.fade_out, R.anim.fade_in); 

ft.replace(R.id.realtabcontent, fragment);  
ft.commit(); 

i XML dla fadeIn

<set xmlns:android="http://schemas.android.com/apk/res/android"> 
     <alpha android:fromAlpha="0.0" android:toAlpha="1.0" 
      android:duration="@android:integer/config_mediumAnimTime" /> 
</set> 

i XML dla fadeOut

<set xmlns:android="http://schemas.android.com/apk/res/android"> 
     <alpha android:fromAlpha="1.0" android:toAlpha="0.0" 
      android:duration="@android:integer/config_mediumAnimTime" /> 
</set> 
+22

Nie musisz tworzyć xml dla podstawowych animacji. Użyj domyślnych: 'setCustomAnimations (android.R.anim.fade_in, android.R.anim.fade_out);' – Nexen

+0

@Nexen yeah .. ale jeśli zauważysz komentarz M'a, facet poprosił o kod pliku xml. –

+3

Użyj ft.setCustomAnimations (R.anim.fade_in, R.anim.fade_out); zamiast ft.setCustomAnimations (R.anim.fade_out, R.anim.fade_int) ;. Pierwszy parametr to wprowadź drugi parametr to wyjście. – mertsimsek

2

Warto dodać, że setCustomAnimations może również mieć 4 argumenty:

FragmentTransaction setCustomAnimations (int enter, 
             int exit, 
             int popEnter, 
             int popExit) 

Skonfiguruj określone zasoby animacji, które będą uruchamiane dla fragmentów wprowadzanych i wychodzących w tej transakcji. Animacje popEnter i popExit będą odtwarzane dla operacji wejścia/wyjścia, szczególnie gdy pojawi się na tylnym stosie.

Powiązane problemy