Android 片段滑出动画不起作用

Android 片段滑出动画不起作用,android,animation,fragment,Android,Animation,Fragment,我有一个安卓应用程序,我在其中点击一个按钮,从一个片段中加载另一个片段 Fragment fragment = new EditImagesFragment(); FragmentManager fragmentManager = getFragmentManager(); FragmentTransaction tran = fragmentManager.beginTransaction(); tran.setCustomAnimations(R.anim.push, R.anim.pop)

我有一个安卓应用程序,我在其中点击一个按钮,从一个片段中加载另一个片段

Fragment fragment = new EditImagesFragment();
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction tran = fragmentManager.beginTransaction();
tran.setCustomAnimations(R.anim.push, R.anim.pop);
tran.replace(R.id.content_frame, fragment).addToBackStack(null).commit();
我有推和弹出滑入滑出的动画,定义如下

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

    <objectAnimator
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:duration="500"
        android:propertyName="x"
        android:valueFrom="1000"
        android:valueTo="0"
        android:valueType="floatType" />

</set>
现在,当我加载片段时,它按预期滑入,但当我按下后退按钮并尝试返回时,滑出动画不起作用,我支持v14及以上的API级别。 有人能发现这个问题吗


谢谢

您应该使用FragmentTransaction的4参数方法。setCustomAnimations。。。而不是2


另外,由于您使用的是本机片段apiapi 14+,因此我认为动画XML应该放在animator res文件夹中

您应该使用FragmentTransaction.setCustomAnimations的4参数方法。。。而不是2

另外,由于您使用的是本机片段apiapi 14+,因此我认为动画XML应该放在animator res文件夹中

尝试: 进入新屏幕:

<?xml version="1.0" encoding="UTF-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="100%p" android:toXDelta="0%p" android:duration="500" /> 
</set>
删除\u片段:

<?xml version="1.0" encoding="UTF-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="0%p" android:toXDelta="100%p" android:duration="500" /> 
</set>
setcustomanimations方法在片段的情况下使用四个参数,mate我不擅长解释,但这是一个解决方法。试试看,让我知道它是否有效。

试试: 进入新屏幕:

<?xml version="1.0" encoding="UTF-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="100%p" android:toXDelta="0%p" android:duration="500" /> 
</set>
删除\u片段:

<?xml version="1.0" encoding="UTF-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="0%p" android:toXDelta="100%p" android:duration="500" /> 
</set>
setcustomanimations方法在片段的情况下使用四个参数,mate我不擅长解释,但这是一个解决方法。试试看,让我知道它是否有效。

试试看

SetCustomAnimationInt-enter、int-exit、int-popEnter、int-popExit

而不是

setCustomAnimationsint输入,int退出

根据,从后堆栈弹出时将不会播放进入和退出动画。

试试看

SetCustomAnimationInt-enter、int-exit、int-popEnter、int-popExit

而不是

setCustomAnimationsint输入,int退出


根据,从后堆栈弹出时将不会播放输入和退出动画。

它们位于animo文件夹中,用于4个参数方法。我不需要指定其他动画吗?请尝试R.animator.in,R.animator.out,R.animator.in,R.animator.outtran.setCustomAnimationsR.anim.push,R.anim.pop,R.anim.push,R.anim.pop;我所做的和现在所做的都是,它只在一个方向上滑动,你说的一个方向是什么意思?我的意思是,当它在一个方向上加载和卸载两次时,它只在一个方向上滑动。它们在animo文件夹中,用于4个参数方法。我不需要指定其他动画吗?请尝试R.animator.in,R.animator.out,R.animator.in,R.animator.outtran.setCustomAnimations R.anim.push,R.anim.pop,R.anim.push,R.anim.pop;我所做的和现在所做的是,它只在一个方向上滑动吗?你说的一个方向是什么意思?我的意思是,当它装载和卸载两次时,它只在一个方向上滑动