2013-08-01 45 views
0

我有一个objectAnimator了Thread.sleep不工作的Android

final ObjectAnimator anim = (ObjectAnimator) AnimatorInflater 
       .loadAnimator(getActivity(), R.anim.flip); 
     anim.setTarget(tvDebitAmount); 
     anim.setDuration(3000); 
     anim.start(); 

我需要这在一个循环工作,具有一定的差距。我的意思是,一旦这个动画完成,我需要等待4000毫秒后再次调用anim.start。

我试图把它在一个无限循环,并anim.start后放了Thread.Sleep()()。它不工作(整个屏幕没有响应)。我怎样才能让它等待/睡觉?

+0

了Thread.sleep应该睡在你调用它的线程。当你睡在GUI线程时,你可以阻止它做其他事情,比如更新屏幕或响应事件。换句话说Thread.sleep工作正常。在您从事件处理返回之前,屏幕不会更新。 –

回答

3

Thread.sleep()阻塞当前线程是UI线程,你不希望出现这种情况。

为了使动画工作,你所希望的方式,只需将它包装在运行4000毫秒长,而在集合中的实际动画还是只需要3000毫秒的动画集。那么动画重复播放模式设置为RESTART和重复计数至INFINITE

+0

谢谢! anim.setRepeatCount(ObjectAnimator.INFINITE);帮助过我。我没有使用任何循环。在重复之前,我仍然无法等待。增加setDuration只是使动画变慢。 –

+0

更新了答案以澄清:将动画包装在运行时间为7000ms的动画集中,并将3000ms动画放入其中。 – laalto