2014-05-02 14 views
25

Ich ersetze ein Fragment durch ein anderes Fragment. Ich möchte, dass das erste Fragment mit einem Fade-Out-Effekt verschwindet und das zweite Fragment mit dem Fade-In-Effekt erscheint. Wie wird das gemacht?So wenden Sie eine Fade-In/Fade-Out-Animation beim Ersetzen eines Fragments an

+0

Wissen Sie, wie man die Animationen macht? – kabuto178

+0

ja in XML-Datei und Laden in Aktivität –

+0

verwenden Animator --- nicht Animation! Verwenden Sie android.R.ANIMATOR.fade_in, verwenden Sie nicht android.R.ANIM.fade_in - es hat Verhalten BUGS – user1269737

Antwort

10

Wenn Sie schieben ein Fragment dann anwenden Animation wie:

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(); 

und Wenn Sie Fragment Pop dann Animation anwenden wie:

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(); 

Hope this für Sie arbeitet.

Update: Für weitere Informationen gehen Sie zu

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

können Sie die Xml-Datei Code geben, weil es nicht in meinem Fall funktioniert –

+0

@QadeerHussaincheck mein Update –

+0

ok seine Arbeit für Ich aber ich will, wenn der erste Rahmen verblassen dann zweitens ausbleichen nach einiger Zeit –

33

Mit Zusatz-Code @MD

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(); 

und Wenn Sie Fragment Pop dann anwenden Animation wie:

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(); 

und XML für 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> 

und XML für 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

Sie müssen nicht wirklich xml für Basisanimationen erstellen. Verwenden Sie standardmäßig die folgenden: 'setCustomAnimations (android.R.anim.fade_in, android.R.anim.fade_out);' – Nexen

+0

@Nexen yeah .. aber wenn Sie M Ds Kommentar bemerken, fragte der Typ nach XML-Code. –

+3

Verwenden Sie ft.setCustomAnimations (R.anim.fade_in, R.anim.fade_out); anstelle von ft.setCustomAnimations (R.anim.fade_out, R.anim.fade_int) ;. Erster Parameter ist eingeben, zweiter Parameter ist Exit. – mertsimsek

2

Es ist hinzuzufügen, dass setCustomAnimations auch 4 Argumente haben:

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

Legen Sie bestimmte Animationsressourcen für die Fragmente fest, die in dieser Transaktion eingeben und beenden. Die PopEnter- und popExit-Animationen werden für Enter/Exit-Vorgänge abgespielt, insbesondere wenn den Backstack knackt.

Verwandte Themen