2014-05-02 12 views
25

Sto sostituendo un frammento con un altro frammento. Voglio che il primo frammento scompaia con un effetto dissolvenza e il secondo frammento appaia con effetto dissolvenza. Come è fatto?Come applicare un'animazione di fade-in/fade-out quando si sostituisce un frammento

+0

Sai come creare le animazioni? – kabuto178

+0

sì nel file xml e caricare nell'attività –

+0

utilizzare ANIMATOR --- not Animation! usa android.R.ANIMATOR.fade_in, NON usare android.R.ANIM.fade_in - ha un comportamento BUGS – user1269737

risposta

10

quando si preme un Fragment poi applicare l'animazione come:

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

e quando si pop Fragment quindi applicare l'animazione come:

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

Spero che questo funziona per voi.

Update: Per maggiori informazioni vai a

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

puoi dare il codice del file xml perché non funziona nel mio caso –

+0

@QadeerHussaincheck il mio aggiornamento –

+0

ok sta lavorando per ma io voglio quando il primo fotogramma si sbiadisce e poi il secondo si attenua dopo un po 'di tempo –

33

Con Oltre a @MD codice

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

e quando si pop Frammento quindi applicare animazione come:

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

e XML per 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> 

e XML per 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

Non è davvero necessario creare xml per le animazioni di base. Usa quelli predefiniti: 'setCustomAnimations (android.R.anim.fade_in, android.R.anim.fade_out);' – Nexen

+0

@Nexen yeah .. ma se noti il ​​commento di M D'il ragazzo ha chiesto il codice del file xml. –

+3

Usa ft.setCustomAnimations (R.anim.fade_in, R.anim.fade_out); invece di ft.setCustomAnimations (R.anim.fade_out, R.anim.fade_int) ;. Il primo parametro è immettere il secondo parametro è l'uscita. – mertsimsek

2

Vale la pena aggiungere che setCustomAnimations possono anche avere 4 argomenti:

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

Imposta risorse di animazione specifiche da eseguire per i frammenti che sono che entrano e escono in questa transazione. Le animazioni popEnter e popExit verranno riprodotte per le operazioni di inserimento/uscita in particolare quando apre lo stack posteriore.

Problemi correlati