我想在打开和关闭时对一个片段进行动画处理。我有一个淡入淡出的自定义动画XML文件。
我正在使用support FragmentTransaction
上的setCustomAnimations
,但它只在执行addToBackStack
时进行动画处理,当我执行popBackStack
时,它就消失了,没有任何动画效果。
以下是我的一小部分代码:
private void fragmentAppear(){
fragment = new LoginFragment();
fragmentManager = LoginActivity.this.getSupportFragmentManager();
fragmentTransaction = fragmentManager.beginTransaction();
//my XML anim files
fragmentTransaction.setCustomAnimations(R.anim.slide_in_bottom,0,0,R.anim.slide_out_bottom);
fragmentTransaction.replace(R.id.login_fragment, fragment);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
}
private void fragmentDisappear(){
getSupportFragmentManager().popBackStack();
}
在setCustomAnimations部分,我使用了4个参数,目前只有在调用fragmentAppear时,在滑入之前才显示淡出动画,但从未在调用fragmentDisappear时显示。我已经尝试了许多不同的参数顺序,还尝试了setCustomAnimations的两个参数版本,但所有这些都只会在片段出现时进行动画。
我正在使用android.support.v4.app库来管理我的片段。
编辑:此外,如果没有调用fragmentDisappear,按下后退按钮时动画也不会显示。
过去的代码在活动中,我尝试从片段中执行popBackStack,但它也无效。这是关闭我的片段的正确方法吗?
编辑:我将包含XML动画:
slide_in_bottom.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:fromYDelta="75%p"
android:toYDelta="0%p"
android:fillAfter="true"
android:duration="400" />
</set>
slide_out_bottom.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:fromYDelta="0%p"
android:toYDelta="75%p"
android:fillAfter="true"
android:duration="400" />
</set>