我正在尝试将fast_out_linear_in
插值器用于片段转换动画。支持库现在通过其FastOutLinearIn类提供此插值器。
指定片段转换动画的方法是通过FragmentTransaction的setCustomAnimations方法,该方法仅获取动画XML资源ID。
这是一个问题,因为支持库插值器不能通过XML获得,例如这样:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:interpolator/fast_out_linear_in">
<translate android:fromXDelta="100%p" android:toXDelta="0"
android:duration="@android:integer/config_shortAnimTime"/>
<alpha android:fromAlpha="0.0" android:toAlpha="1.0"
android:duration="@android:integer/config_shortAnimTime" />
</set>
当support-v4:22.1.1是依赖项时,仍然会收到错误@android:interpolator/fast_out_linear_in requires API level 21
。
是否有可用于片段转换的自定义动画类的解决方法?
答案 0 :(得分:0)
查看FragmentManager,为其提供自定义动画的唯一方法是重载Fragment.onCreateAnimation(int transit, boolean enter, int nextAnim)
从源代码;机器人/支撑/ V4 /应用程序/ FragmentManager
Animation loadAnimation(Fragment fragment, int transit, boolean enter,
int transitionStyle) {
Animation animObj = fragment.onCreateAnimation(transit, enter,
fragment.mNextAnim);
if (animObj != null) {
return animObj;
}
if (fragment.mNextAnim != 0) {
Animation anim = AnimationUtils.loadAnimation(mHost.getContext(), fragment.mNextAnim);
if (anim != null) {
return anim;
}
}
...
}