Как применить анимацию fade-in/fade-out при замене фрагмента

Я заменяю фрагмент другим фрагментом. Я хочу, чтобы первый фрагмент исчез с эффектом затухания, а второй фрагмент появился с эффектом затухания. Как это делается?

Ответ 1

С добавлением кода @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();

и когда вы поп-фрагмент затем применяете анимацию, например:

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

и XML для 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>

и XML для 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>

Ответ 2

Когда вы нажимаете Fragment примените анимацию, например:

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

и когда вы поп- Fragment затем применяете анимацию, например:

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

Надеюсь, что это работает для вас.

Обновление: для получения дополнительной информации перейдите к

  1. http://android-er.blogspot.in/2013/04/implement-animation-in.html
  2. Анимировать переход между фрагментами

Ответ 3

Стоит добавить, что setCustomAnimations также может иметь 4 аргумента:

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

Задайте конкретные ресурсы анимации для выполнения фрагментов, которые входят и выходят в эту транзакцию. Анимации popEnter и popExit будут воспроизводиться для операций ввода/выхода, особенно при появлении заднего стека.