在XML定义的动画

时间:2015-10-01 10:32:14

标签: android android-animation

我试图在我用XML定义的动画中使用propertyValuesHolder objectAnimator。{I}。当我加载它时,抛出运行时异常,原因为Unknown animator name: propertyValuesHolder

这是直接从ObjectAnimator文档here获取的完整动画:

<?xml version="1.0" encoding="utf-8"?>
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
            android:duration="1000"
            android:repeatCount="1"
            android:repeatMode="reverse">
    <propertyValuesHolder android:propertyName="x" android:valueTo="400"/>
    <propertyValuesHolder android:propertyName="y" android:valueTo="200"/>
</objectAnimator>

我使用以下代码加载并启动动画:

Animator animator = AnimatorInflater.loadAnimator(getApplicationContext(), R.animator.example);
animator.setTarget(view);
animator.start();

我从堆栈跟踪中得到的原因是:

Caused by: java.lang.RuntimeException: Unknown animator name: propertyValuesHolder
  at android.animation.AnimatorInflater.createAnimatorFromXml(AnimatorInflater.java:592)
  at android.animation.AnimatorInflater.createAnimatorFromXml(AnimatorInflater.java:551)
  at android.animation.AnimatorInflater.loadAnimator(AnimatorInflater.java:122) 
  at android.animation.AnimatorInflater.loadAnimator(AnimatorInflater.java:102)
  at android.animation.AnimatorInflater.loadAnimator(AnimatorInflater.java:87)

当我使用不包含propertyValuesHolder的动画时,此功能正常。我无法在网上找到任何在XML中使用该标签的示例。我做错了什么或者它不起作用?

1 个答案:

答案 0 :(得分:2)

我认为原因是在Lollipop之前不支持 propertyValuesHolder XML元素。

如果您查看AnimatorInflater,您会看到第一次引用PropertyValuesHolder类,其中有5.0。