android动画向左滑出,背面反转

android动画向左滑出,背面反转,android,android-fragments,android-animation,Android,Android Fragments,Android Animation,我试图在iOS上实现类似于推送和弹出动画的效果。用户导航离开的片段应该从左侧滑出,用户导航到的片段应该从右侧滑入。当用户向后导航时(通过单击工具栏上的小箭头图标或按设备上的“后退”按钮),动画应反转;“弹出的”片段应该向右滑出,层次结构中的前一个片段应该从左滑回。所以,实际上感觉就像你回到了箭头所指的方向。不幸的是,我只能让第一部分发生;当用户返回时,前面的片段也(与直觉相反)从右侧滑入,弹出的片段滑入左侧!(与预期效果完全相反) 这是我的片段转换代码: FragmentManager fMan

我试图在iOS上实现类似于推送和弹出动画的效果。用户导航离开的片段应该从左侧滑出,用户导航到的片段应该从右侧滑入。当用户向后导航时(通过单击工具栏上的小箭头图标或按设备上的“后退”按钮),动画应反转;“弹出的”片段应该向右滑出,层次结构中的前一个片段应该从左滑回。所以,实际上感觉就像你回到了箭头所指的方向。不幸的是,我只能让第一部分发生;当用户返回时,前面的片段也(与直觉相反)从右侧滑入,弹出的片段滑入左侧!(与预期效果完全相反)

这是我的片段转换代码:

FragmentManager fManager = getSupportFragmentManager();
FragmentTransaction transaction = fManager.beginTransaction();
transaction.setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_right, R.anim.slide_in_left, R.anim.slide_out_right);
transaction.replace(R.id.wholeview, itemChoiceFragment, ItemChoiceFragment.class.getName());
transaction.addToBackStack("itemChoice");
transaction.commit();
以下是我的动画XML: _left.xml中的幻灯片\u:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate xmlns:android="http://schemas.android.com/apk/res/android"
   android:fromXDelta="100%"
   android:toXDelta="0"
   android:interpolator="@android:anim/decelerate_interpolator"
   android:duration="400"/>
</set>

滑出\u right.xml:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
  <translate xmlns:android="http://schemas.android.com/apk/res/android"
   android:fromXDelta="0"
   android:toXDelta="-100%"
   android:startOffset="100"
   android:interpolator="@android:anim/decelerate_interpolator"
   android:duration="300"/>
</set>

任何帮助都将不胜感激

谢谢。

代替

transaction.setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_right, R.anim.slide_in_left, R.anim.slide_out_right);
使用

其中R.anim.滑入右侧

<?xml version="1.0" encoding="utf-8"?>
   <set xmlns:android="http://schemas.android.com/apk/res/android">
   <translate xmlns:android="http://schemas.android.com/apk/res/android"
   android:fromXDelta="-100%"
   android:toXDelta="0"
   android:interpolator="@android:anim/decelerate_interpolator"
   android:duration="400"/>
   </set>
所以基本上

-进入时从右向左滑动新片段

-离开当前片段时向左滑出

-单击“上一步”时,将旧片段从左向右滑动

-单击“上一步”时,将当前片段向右滑动

根据方法说明

FragmentTransaction setCustomAnimations (int enter, 
            int exit, 
            int popEnter, 
            int popExit)
设置要为此事务中正在进入和退出的片段运行的特定动画资源。弹出后堆栈时,将为进入/退出操作播放popEnter和popExit动画


您可以像这样使用可见性类(幻灯片的超级类):

Slide slideTransition = new Slide(fromRightToLeft ? Gravity.END : Gravity.START);
        slideTransition.setDuration(GlobalConstants.TRANSITION_ANIMATION_DURATION);
        fragment.setEnterTransition(slideTransition);

《完整指南》

是不是在这个问题上浪费了太多时间,它帮助了我
setCustomAnimations(int enter, int exit, int popEnter, int popExit)
FragmentTransaction setCustomAnimations (int enter, 
            int exit, 
            int popEnter, 
            int popExit)
Slide slideTransition = new Slide(fromRightToLeft ? Gravity.END : Gravity.START);
        slideTransition.setDuration(GlobalConstants.TRANSITION_ANIMATION_DURATION);
        fragment.setEnterTransition(slideTransition);