片段customAnimation在Lollipop中不起作用

Niz*_*zam 24 android android-fragments

我有以下代码来设置片段的进入和退出动画.

final FragmentManager manager = getSupportFragmentManager();
final FragmentTransaction ft = manager.beginTransaction();
    ft.setCustomAnimations(R.anim.slide_in_right, R.anim.slide_out_left, R.anim.slide_in_left, R.anim.slide_out_right);
    ft.replace(R.id.container, fragment, tag);
    ft.addToBackStack(tag);
    ft.commitAllowingStateLoss();
Run Code Online (Sandbox Code Playgroud)

slide_in_left.xml

<?xml version="1.0" encoding="utf-8"?>

<set xmlns:android="http://schemas.android.com/apk/res/android">

    <translate android:fromXDelta="-100%"
    android:toXDelta="0%"
    android:duration="@integer/slide_anim_duration" />

</set>
Run Code Online (Sandbox Code Playgroud)

对所有其他动画使用相同的方法.在所有其他版本中工作正常,但问题仅在于Lollipop.正如我们在看功能
setCustomAnimations (int enter, int exit, int popEnter, int popExit) 文档链接,
enter并且exit工作正常,但popEnterpopExit在棒棒糖失败.
请指导我出了什么问题,并提供适用于Android 2.3到5.1的兼容解决方案

更新:

仔细观察,似乎动画就在那里,但持续时间没有影响.

Jiv*_*wat 1

您还可以在所有片段中尝试 onCreateAnimator...或者它们正在扩展的基本片段...

@target_api 20 or higher

@Override
    public Animator onCreateAnimator(int transit, boolean enter, int nextAnim) {
        if (enter) {
            return AnimatorInflater.loadAnimator(getActivity(), R.animator.slide_in_top);
        } else {
            return AnimatorInflater.loadAnimator(getActivity(), R.animator.fade_out);
        }
    }
Run Code Online (Sandbox Code Playgroud)

请注意,上述两个动画师都是预先定义的,并且 R 中有 android.R

希望这有助于欢呼!