我在我的布局中使用了一个片段,我想要滑入,滑出片段的动画。
这就是我的片段的样子
<fragment
android:id="@+id/fragment_place"
android:name="com.mainpackage.FragmentOne"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" />
这是我在动画 xml 文件中的幻灯片
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<objectAnimator
android:interpolator="@android:interpolator/decelerate_quint"
android:valueFrom="-1000dp" android:valueTo="0dp"
android:valueType="floatType"
android:propertyName="translationX"
</set>
这是我的滑出动画 xml 文件
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<objectAnimator
android:interpolator="@android:interpolator/decelerate_quint"
android:valueFrom="0dp" android:valueTo="1000dp"
android:valueType="floatType"
android:propertyName="translationX"
android:duration="@android:integer/config_shortAnimTime" />
</set>
然而,这种转变似乎很奇怪。似乎第一个片段(FragmentOne)总是在那里。当调用过渡时,FragmentOne 会显示一段时间,然后是动画中的幻灯片。 没有可见的滑出动画。
我已经读过不建议像在我的代码中那样静态修复片段,但这就是我得到不正确动画的原因吗?我应该怎么做才能修复过渡?
这是我的切换代码:
FragmentManager fm = getFragmentManager();
FragmentTransaction fragmentTransaction = fm.beginTransaction();
if(oldt!=t)
{ fragmentTransaction.setCustomAnimations(R.anim.slide_in, R.anim.slide_out);
oldt=t;
}
else
{
fragmentTransaction.setCustomAnimations(R.anim.none, R.anim.none);
}
fragmentTransaction.replace(R.id.fragment_place, fr);
fragmentTransaction.commit();