2013-08-01 77 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