首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >java.lang.RuntimeException:未知动画名称: objectAnimator

java.lang.RuntimeException:未知动画名称: objectAnimator
EN

Stack Overflow用户
提问于 2013-09-25 23:17:51
回答 2查看 28K关注 0票数 20

我在使用以下命令时遇到此错误

代码语言:javascript
运行
复制
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();

但当我将其更改为

代码语言:javascript
运行
复制
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();

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

我看过一些文章说support-v4不支持res/animator,所以我也试着把我的动画XML文件移到res/anim文件夹中,并通过R.anim.card_flip_right_in引用它

但是它仍然不起作用,有人能告诉我我能做什么吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-06 07:12:55

支持片段管理器不支持动画师(仅支持动画)。异常消息指出您的xml资源中存在错误的动画格式,这可能是因为您将animator移到了这个错误的xml (因为它们具有不同的符号)。您需要以适当的方式编写它:http://developer.android.com/guide/topics/graphics/view-animation.html

票数 24
EN

Stack Overflow用户

发布于 2016-05-04 21:48:56

如果您使用的是支持片段,请在res中添加下面的xml文件

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

代码语言:javascript
运行
复制
<?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的内容

代码语言:javascript
运行
复制
<?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文件的内容

代码语言:javascript
运行
复制
<?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文件的内容

代码语言:javascript
运行
复制
<?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>

最后,在片段转换代码中添加下面这一行

代码语言:javascript
运行
复制
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)
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19008808

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档