【问题标题】:Loading animation from xml fails on Android 1.5: "Unknown interpolator name: set". How to fix?在 Android 1.5 上从 xml 加载动画失败:“未知插值器名称:设置”。怎么修?
【发布时间】:2011-09-10 12:56:20
【问题描述】:

我有一个像这样在 xml 中指定的动画:

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

<set xmlns:android="http://schemas.android.com/apk/res/android">
·       <translate android:fromXDelta="0" android:toXDelta="100%p" android:duration="300" android:interpolator="@android:anim/anticipate_overshoot_interpolator" />
·       <alpha android:fromAlpha="1.0" android:toAlpha="0.0" android:duration="300" />
</set>

这个文件是 res/anim/push_right_in.xml

然后在 Java 代码中我尝试像这样加载它:

mAnimationRightIn = AnimationUtils.loadAnimation(this, R.anim.push_right_in);

它在 1.6、2.1、2.2 上运行良好,但在 1.5 上抛出异常:

clock.ClockSelectActivity}: java.lang.RuntimeException: Unknown interpolator name: set
E/AndroidRuntime(  682):        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2268)
E/AndroidRuntime(  682):        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2284)
E/AndroidRuntime(  682):        at android.app.ActivityThread.access$1800(ActivityThread.java:112)
E/AndroidRuntime(  682):        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1692)
E/AndroidRuntime(  682):        at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(  682):        at android.os.Looper.loop(Looper.java:123)
E/AndroidRuntime(  682):        at android.app.ActivityThread.main(ActivityThread.java:3948)
E/AndroidRuntime(  682):        at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(  682):        at java.lang.reflect.Method.invoke(Method.java:521)
E/AndroidRuntime(  682):        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:782)
E/AndroidRuntime(  682):        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:540)
E/AndroidRuntime(  682):        at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime(  682): Caused by: java.lang.RuntimeException: Unknown interpolator name: set
E/AndroidRuntime(  682):        at android.view.animation.AnimationUtils.createInterpolatorFromXml(AnimationUtils.java:321)
E/AndroidRuntime(  682):        at android.view.animation.AnimationUtils.loadInterpolator(AnimationUtils.java:270)
E/AndroidRuntime(  682):        at android.view.animation.Animation.setInterpolator(Animation.java:290)
E/AndroidRuntime(  682):        at android.view.animation.Animation.<init>(Animation.java:213)
E/AndroidRuntime(  682):        at android.view.animation.TranslateAnimation.<init>(TranslateAnimation.java:54)
E/AndroidRuntime(  682):        at android.view.animation.AnimationUtils.createAnimationFromXml(AnimationUtils.java:115)
E/AndroidRuntime(  682):        at android.view.animation.AnimationUtils.createAnimationFromXml(AnimationUtils.java:107)
E/AndroidRuntime(  682):        at android.view.animation.AnimationUtils.createAnimationFromXml(AnimationUtils.java:84)
E/AndroidRuntime(  682):        at android.view.animation.AnimationUtils.loadAnimation(AnimationUtils.java:64)
E/AndroidRuntime(  682):        at com.the7art.rockclock.ClockSelectActivity.onCreate(ClockSelectActivity.java:46)
E/AndroidRuntime(  682):        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1123)
E/AndroidRuntime(  682):        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2231)
E/AndroidRuntime(  682):        ... 11 more

知道是什么原因造成的以及如何解决吗? 我在 Android 的 API 示例中检查了一些 xml 定义的动画示例,它们包含几乎相同的代码,具有不同的参数,所以我想它确实应该可以工作。

我看到一种方法是停止在 xml 中定义它们并在代码中创建动画,但我想知道是否还有一种方法可以在 xml 中执行它:)

【问题讨论】:

    标签: android


    【解决方案1】:

    找到原因了。

    它崩溃了,因为我在第一个动画标签中有“android:interpolator="@android:anim/anticipate_overshoot_interpolator" 属性。它无论如何都不起作用(因为它需要标签中的 android:shareInterpolator="false" 才能工作) ,所以我刚刚删除了这个。

    我猜这是 Android 1.5 的一些错误 :)

    【讨论】:

      【解决方案2】:

      在Android 1.5中,解决方法是去掉“android:interpolator="@android:anim/anticipate_overshoot_interpolator"

      【讨论】:

      • 这不是和上面的答案完全一样吗? :)
      猜你喜欢
      • 1970-01-01
      • 2012-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-19
      • 1970-01-01
      • 2013-05-17
      • 1970-01-01
      相关资源
      最近更新 更多