2014-01-05 166 views
0

我試圖做一個簡單的倒數計時器,顯示在吐司剩餘時間。
我寫了這個代碼:計時器在吐司android

new CountDownTimer(10000, 1000) { 

    public void onTick(long timeRemaining) { 
     Toast.makeText(getBaseContext(), "" + timeRemaining/1000, 
                 Toast.LENGTH_SHORT).show(); 
    } 

    public void onFinish() { 
     // do something 
    } 

}.start(); 

的問題是,當敬酒我展示「3」被執行這在onFinish方法的動作。
所以,敬酒時間比較慢。
我該如何解決這個問題?

+4

我建議你使用textview來顯示剩餘時間而不是吐司。 – Raghunandan

+0

我需要用烤麪包。 –

+1

如果您試圖向用戶展示倒計時,那麼Toast會爲此產生不愉快的用戶體驗。例如,您可以改用Dialog或DialogFragment。 – dm78

回答

1

Toast不應該這樣使用。 Toast.LENGTH_SHORT會在消失前保持3秒鐘,但是計時器會每秒觸發一次,所以顯然Toast很慢。

如果你想顯示定時器的用戶,那麼你必須使用一個TextView的,如果你想定時器爲自己,那麼你可以使用Log.d();

更新: - 後有點搜索,我發現,你不能爲自定義時間設置Toast。吐司只有兩個值Toast.LENGTH_LONG和Toast.LENGTH_SHORT。在這裏看到這個問題Can an Android Toast be longer than Toast.LENGTH_LONG?。作爲一種解決方法,如果你真的想設置祝酒只需1秒,那麼你可以,如果他們出現在快速連續做

final Toast toast = Toast.makeText(ctx, "This message will disappear in 1 second", Toast.LENGTH_SHORT); 
     toast.show(); 

     Handler handler = new Handler(); 
      handler.postDelayed(new Runnable() { 
       @Override 
       public void run() { 
        toast.cancel(); 
       } 
     }, 1000); 
+0

你不能將秒的持續時間設置爲烤麪包,以便它與計時器保持同步? –

+0

你可以用1000代替Toast.LENGTH_SHORT –

+0

這個計時器總是在敬酒時更快尊敬 –

0

Android操作系統隊列乾杯。所以會發生的是實際滴答和敬酒之間的延遲會慢慢消失。這意味着對於許多蜱,敬酒開始落後。一個簡單的解決辦法是減少敬酒的數量。