我有一个Android应用程序,我点击按钮从一个片段加载另一个片段
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>
<?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="0"
android:valueTo="-1000"
android:valueType="floatType" />
</set>
现在,当我加载片段时,它按预期滑入,但当我按下后退按钮并尝试返回时滑出动画不起作用,我支持v14及以上API级别。 任何人都可以发现这个问题吗?
由于
答案 0 :(得分:4)
尝试
setCustomAnimations(int enter,int exit,int popEnter,int popExit)
而不是
setCustomAnimations(int enter,int exit)
根据Android documentation,输入并退出动画将无法播放从后筹码弹出
答案 1 :(得分:3)
你应该使用FragmentTransaction.setCustomAnimations(...)
的4 params方法而不是2。
另外,既然你使用了原生片段api(api 14+),我想动画xmls应该放在animator
res文件夹中。
答案 2 :(得分:1)
fragmentTransaction.setCustomAnimations(R.anim.enter_new_screen, 0, 0,R.anim.remove_fragment);
enter_new_screen:
<?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>
remove_fragment:
<?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方法在片段的情况下需要四个参数,配对我不是很好的解释,但这是一个解决方法。尝试一下,让我知道它是否有效。