如何在替换片段时应用淡入/淡出动画

Qad*_*ain 35 android

我正在用另一个片段替换片段.我希望第一个片段以淡出效果消失,第二个片段以淡入效果显示.这是怎么做到的?

Raf*_*med 50

除了@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();
Run Code Online (Sandbox Code Playgroud)

当你弹出片段然后应用动画,如:

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();
Run Code Online (Sandbox Code Playgroud)

和用于淡入淡出的XML

<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>
Run Code Online (Sandbox Code Playgroud)

和fadeOut的XML

<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>
Run Code Online (Sandbox Code Playgroud)

  • 您根本不需要为基本动画创建xml.使用默认值:`setCustomAnimations(android.R.anim.fade_in,android.R.anim.fade_out);` (42认同)
  • 使用ft.setCustomAnimations(R.anim.fade_in,R.anim.fade_out); 而不是ft.setCustomAnimations(R.anim.fade_out,R.anim.fade_int);. 第一个参数是输入第二个参数是退出. (3认同)

M D*_*M D 10

按下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();
Run Code Online (Sandbox Code Playgroud)

当你弹出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();
Run Code Online (Sandbox Code Playgroud)

希望这对你有用.

更新:有关更多信息,请转到

  1. http://android-er.blogspot.in/2013/04/implement-animation-in.html
  2. 动画片段之间的过渡


Sim*_*mon 5

值得补充的是 setCustomAnimations 也可以有 4 个参数:

FragmentTransaction setCustomAnimations (int enter, 
                                         int exit, 
                                         int popEnter, 
                                         int popExit)
Run Code Online (Sandbox Code Playgroud)

设置特定动画资源以运行此事务中进入和退出的片段。popEnter 和 popExit 动画将在弹出返回堆栈时专门针对进入/退出操作播放。