支持库22.1用于片段转换动画的素材内插器

时间:2015-05-26 00:05:00

标签: android animation android-fragments android-support-library

我正在尝试将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

是否有可用于片段转换的自定义动画类的解决方法?

1 个答案:

答案 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;
        }
    }
...
}