java.lang.RuntimeException: Unknown animation name: objectAnimator如何解决?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (237)

当我使用

getActivity().getSupportFragmentManager()
                        .beginTransaction()
                        .setCustomAnimations(
                                R.animator.card_flip_right_in, R.animator.card_flip_right_out,
                                R.animator.card_flip_left_in, R.animator.card_flip_left_out)
                        .replace(R.id.content_fragment, new DaysSinceBirthSettingFragment())
                        .addToBackStack(null)
                        .commit();

但当我把它改成

getActivity().getFragmentManager()
                        .beginTransaction()
                        .setCustomAnimations(
                                R.animator.card_flip_right_in, R.animator.card_flip_right_out,
                                R.animator.card_flip_left_in, R.animator.card_flip_left_out)
                        .replace(R.id.content_fragment, new DaysSinceBirthSettingFragment())
                        .addToBackStack(null)
                        .commit();

它工作得很好。但是我需要支持旧版本,所以我必须使用支持-v4,它getSupportFragmentManager()来自。

我读过一篇文章说res/animator不支持-v4,所以我还尝试将动画xml文件移到res/anim文件夹并引用它R.anim.card_flip_right_in

但还是没成功,谁能告诉我我能做什么?

提问于
用户回答回答于
用户回答回答于

如果你正在使用支持片段在res中添加下面的xml文件

以下是anim / fragment_slide_left_enter.xml文件的内容。

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:duration="@android:integer/config_mediumAnimTime"
        android:fromXDelta="100%p"
        android:interpolator="@android:interpolator/decelerate_quint"
        android:toXDelta="0%p" />

    <alpha
        android:duration="@android:integer/config_mediumAnimTime"
        android:fromAlpha="0.0"
        android:interpolator="@android:interpolator/decelerate_quint"
        android:toAlpha="1.0" />
</set>

以下是anim / fragment_slide_left_exit.xml的内容

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:duration="@android:integer/config_mediumAnimTime"
        android:fromXDelta="0%p"
        android:interpolator="@android:interpolator/decelerate_quint"
        android:toXDelta="-100%p" />

    <alpha
        android:duration="@android:integer/config_mediumAnimTime"
        android:fromAlpha="1.0"
        android:interpolator="@android:interpolator/decelerate_quint"
        android:toAlpha="0.0" />
</set>

以下代码将成为anim / fragment_slide_right_enter.xml文件的内容

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:duration="@android:integer/config_mediumAnimTime"
        android:fromXDelta="-100%p"
        android:interpolator="@android:interpolator/decelerate_quint"
        android:toXDelta="0%p" />

    <alpha
        android:duration="@android:integer/config_mediumAnimTime"
        android:fromAlpha="0.0"
        android:interpolator="@android:interpolator/decelerate_quint"
        android:toAlpha="1.0" />
</set>

以下代码将成为anim / fragment_slide_right_exit.xml文件的内容

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">

    <translate
        android:duration="@android:integer/config_mediumAnimTime"
        android:fromXDelta="0%p"
        android:interpolator="@android:interpolator/decelerate_quint"
        android:toXDelta="100%p" />

    <alpha
        android:duration="@android:integer/config_mediumAnimTime"
        android:fromAlpha="1.0"
        android:interpolator="@android:interpolator/decelerate_quint"
        android:toAlpha="0.0" />
</set>

最后在你的片段转换代码中加入这一行

ft.setCustomAnimations(R.anim.fragment_slide_left_enter,
                        R.anim.fragment_slide_left_exit,
                        R.anim.fragment_slide_right_enter,
                        R.anim.fragment_slide_right_exit)

扫码关注云+社区

领取腾讯云代金券