带有动画的Backstack的Android pop片段

Nou*_*tti 11 android android-animation android-fragments

我有一个活动加载片段A.片段A包含ListView,当单击列表项时,我加载另一个片段B代替片段A以显示列表视图项详细信息.在按钮上单击并按下设备后退按钮I它将加载前一个片段,即显示ListView的片段A. 所有这一切都运行正常,但我想在背景或按钮点击上加载动画片段A. 我是这样做的,但没有工作:

   FragmentManager fsm = getSupportFragmentManager();
   FragmentTransaction ftransaction = fsm.beginTransaction();                   
   ftransaction.setCustomAnimations(R.anim.enter_from_left, R.anim.enter_from_left);        
   fsm.popBackStack();
   ftransaction.commit();

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:shareInterpolator="false" >

    <translate
     android:duration="700"
     android:fromXDelta="-100%"
     android:fromYDelta="0%"
     android:toXDelta="0%"
     android:toYDelta="0%" />
</set>


<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
  android:shareInterpolator="false" >

  <translate
    android:duration="700"
    android:fromXDelta="-100%"
    android:fromYDelta="0%"
    android:toXDelta="0%"
    android:toYDelta="0%" />

</set>
Run Code Online (Sandbox Code Playgroud)

Sim*_*mas 24

如果你想要背包动画,你需要使用:

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

就像是:

setCustomAnimations(R.anim.enter_from_left, R.anim.enter_from_left,
        R.anim.exit_to_left, R.anim.exit_to_left); 
Run Code Online (Sandbox Code Playgroud)


Hoa*_*Huu 7

就我而言

FragmentTransaction ft = getFragmentManager().beginTransaction();
        ft.setCustomAnimations(android.R.anim.slide_in_left, 
                               android.R.anim.slide_out_right, 
                               R.anim.slide_in_right,
                               R.anim.slide_out_left);
        ft.replace(R.id.fragment_container, targetFragment).addToBackStack(null).commit();
Run Code Online (Sandbox Code Playgroud)

这条线

ft.setCustomAnimations(android.R.anim.slide_in_left, android.R.anim.slide_out_right, 
                       R.anim.slide_in_right, R.anim.slide_out_left);
Run Code Online (Sandbox Code Playgroud)

将创造完美的动画。

向右滑动

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:fromXDelta="50%p" android:toXDelta="0"
               android:duration="@android:integer/config_mediumAnimTime"/>
    <alpha android:fromAlpha="0.0" android:toAlpha="1.0"
           android:duration="@android:integer/config_mediumAnimTime" />
</set>
Run Code Online (Sandbox Code Playgroud)

向左滑出

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:fromXDelta="0" android:toXDelta="-50%p"
               android:duration="@android:integer/config_mediumAnimTime"/>
    <alpha android:fromAlpha="1.0" android:toAlpha="0.0"
           android:duration="@android:integer/config_mediumAnimTime" />
</set>
Run Code Online (Sandbox Code Playgroud)