Android,蜂窝动画(“Animators可能只能在Looper线程上运行”)错误

时间:2011-06-10 15:21:07

标签: android animation looper

我有一个以前的项目,我可以通常使用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类,所以这是一种不受欢迎的方法。

这可能是我的底层lib的版本问题(在这种情况下是processing-android),还是因为Honeycomb从3.0更改为3.1

感谢

1 个答案:

答案 0 :(得分:1)

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