2011-06-08 66 views
4

我想讓一個圖像可見光60毫秒,然後是不可見的,然後我想另一個圖像做相同的..等等。 我不認爲我正在使用計時器..因爲當我運行應用程序時,兩個圖像同時打開,並且在按下使用此功能的按鈕時不會消失。Android:定時器/延遲替代

下面是一些示例代碼..

timer.schedule(new TimerTask() 
     { 
      @Override 
      public void run() 
      { 
       LED_1.setVisibility(View.VISIBLE); 
            // LED_1 is an ImageView 
      } 
     }, 60); 
     LED_1.setVisibility(View.INVISIBLE); 

timer2.schedule(new TimerTask() 
     { 
      @Override 
      public void run() 
      { 
       LED_2.setVisibility(View.VISIBLE); 
            // LED_2 is an ImageView 
      } 
     }, 60); 
     LED_2.setVisibility(View.INVISIBLE); 

難道還有其他選擇嗎?我已經試過類似的例子.. Android app How to delay your Service start on phone boot

http://www.roseindia.net/java/beginners/DelayExample.shtml

但它不這樣做我想要的..

什麼我做錯了嗎?或者有另一種方法可以做到這一點?

謝謝。

-Faul

對於Good.Dima ..

  int delayRate = 60; 
     final Runnable LED_1_On = new Runnable() 
    { 
     public void run() 
     { 
      LED_1.setVisibility(View.VISIBLE); 
        handler.postDelayed(this, delayRate); 

     } 
    }; 

    handler.postDelayed(LED_1_On, delayRate); 

    final Runnable LED_2_On = new Runnable() 
    { 
     public void run() 
     { 
      LED_1.setVisibility(View.INVISIBLE); 
      LED_2.setVisibility(View.VISIBLE); 
        handler3.postDelayed(this, delayRate); 

     } 
    }; 

    handler.postDelayed(LED_2_On, delayRate); 
+0

可能的重複 - http://stackoverflow.com/questions/2005656/android-timer-swing – mre 2011-06-08 19:29:51

回答

0

的問題是,兩個定時器具有60毫秒的延遲,並在兩者的運行方法,你將它們設置爲可見。您需要更改其中一個運行方法以將其設置爲不可見。

+0

好的,現在就試試吧。但有一個問題,因爲我必須在運行後在ms中輸入一個延遲數字。這並不意味着ImageView將在60ms內「隱形」嗎? – faul 2011-06-08 19:30:16

+0

好吧,所以我嘗試了你所說的,現在第一個LED不會「可見」。.. – faul 2011-06-08 19:35:25

2

你可以嘗試使用處理器,它的帖子不便到UI線程,它可以與延遲 postDelayed

+1

當你使用處理程序時記得取消回調onPause :-) – 2011-06-08 19:33:19

+0

嘿,所以我正在尋找Handler的,但我不確定如何實施它。我一直在閱讀Android開發者參考頁面和一些示例代碼,但我不確定如何將我已有的內容翻譯成使用處理程序。 – faul 2011-06-08 20:16:50

+0

[例子](http://stackoverflow.com/questions/1921514/how-to-run-a-runnable-thread-in-android) – 2011-06-08 20:21:55

0

你正在創建這兩個火從現年60毫秒兩個事件發佈。

您可以設置第一個事件在60ms內觸發,第二個在120ms內觸發,或者第一個事件觸發第一個事件從第一個事件運行60ms後提交。

+0

對於LED_2我嘗試了120毫秒的延遲,仍然是同樣的問題。 – faul 2011-06-08 19:45:03