【问题标题】:Android, honeycomb animation ("Animators may only be run on Looper threads") errorAndroid,蜂窝动画(“动画器只能在 Looper 线程上运行”)错误
【发布时间】:2011-06-10 23:28:15
【问题描述】:

我有一个以前的项目,在该项目中,我通常可以使用 ObjectAnimator 类来为这样的任何类设置动画

ObjectAnimator oa = ObjectAnimator.ofFloat(testShape, "translateX", 0f, 000f);
oa.setDuration(1000l);
oa.setRepeatCount(ObjectAnimator.REVERSE);
oa.setRepeatMode(ObjectAnimator.RESTART);
oa.start();

...这会很好,没有问题。现在,当我尝试运行相同的设置时,我得到了

W/dalvikvm(19053): threadid=10: thread exiting with uncaught exception (group=0x400d1760)
E/AndroidRuntime(19053): FATAL EXCEPTION: Animation Thread
E/AndroidRuntime(19053): android.util.AndroidRuntimeException: Animators may only be run on Looper threads
E/AndroidRuntime(19053):    at android.animation.ValueAnimator.start(ValueAnimator.java:900)
E/AndroidRuntime(19053):    at android.animation.ValueAnimator.start(ValueAnimator.java:931)
E/AndroidRuntime(19053):    at android.animation.ObjectAnimator.start(ObjectAnimator.java:282)
E/AndroidRuntime(19053):    at com.processing.test.Run.setup(Run.java:43)

我尝试在我的绘图循环中添加 Looper.prepare() 和 Looper.loop() 但无济于事。由于我以前根本不需要使用 Looper 类,因此这是一种不受欢迎的方法。

这可能是我的底层库(在本例中为 processing-android)的版本问题,还是由于 Honeycomb 从 3.0 更改为 3.1

谢谢

【问题讨论】:

    标签: android animation looper


    【解决方案1】:

    查看 ObjectAnimator 的文档,情况似乎没有改变:您可能只需要确保从 UI 线程进行调用:或者确保在事件处理程序方法中调用它,使用 Handler 实例或使用实际运行动画的 Runnable 执行 View.post()。您是否突然开始从其他位置调用start

    【讨论】:

      猜你喜欢
      • 2016-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-01
      • 2014-12-17
      • 2020-10-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多