片段之间的动画过渡崩溃

Animating transition between fragments crashes

我正在尝试通过将当前片段向左淡化并从右侧淡入新片段来为两个片段之间的过渡设置动画。应用程序在运行时崩溃。

minSdkVersion:16
targetSdkVersion:23
模拟器 运行 api 版本 23

Activity代码

    FragmentTransaction transaction = getFragmentManager().beginTransaction();
    transaction.setCustomAnimations(R.animator.enter_from_right, R.animator.exit_to_left);
    transaction.replace(R.id.listFragmentContainer, fragment);
    transaction.commit();

res/animator/enter_from_right.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:shareInterpolator="false">
<ObjectAnimator
    android:fromXDelta="100%" android:toXDelta="0%"
    android:fromYDelta="0%" android:toYDelta="0%"
    android:duration="700"/>
</set>

res/animator/exit_to_left.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:shareInterpolator="false">
<ObjectAnimator
    android:fromXDelta="0%" android:toXDelta="-100%"
    android:fromYDelta="0%" android:toYDelta="0%"
    android:duration="700"/>
</set>

LogCat

02-17 12:00:25.028 16696-16696/? E/AndroidRuntime: FATAL EXCEPTION: main
                                               Process: com.example.eivind.ticktick, PID: 16696
                                               java.lang.RuntimeException: Unknown animator name: ObjectAnimator

你只是错过了写 objectAnimator 元素

把ObjectAnimator改成objectAnimator这样

res/animator/enter_from_right.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:shareInterpolator="false">
<objectAnimator
    android:fromXDelta="100%" android:toXDelta="0%"
    android:fromYDelta="0%" android:toYDelta="0%"
    android:duration="700"/>
</set>

res/animator/exit_to_left.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:shareInterpolator="false">
<objectAnimator
    android:fromXDelta="0%" android:toXDelta="-100%"
    android:fromYDelta="0%" android:toYDelta="0%"
    android:duration="700"/>
</set>