计时器在吐司机器人

时间:2014-01-05 17:30:50

标签: java android xml

我正在尝试制作一个简单的倒数计时器,以便在祝酒词中显示剩余时间 我写了这段代码:

new CountDownTimer(10000, 1000) {

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

    public void onFinish() {
        // do something
    }

}.start();

问题是onTinish方法中的动作在吐司时执行,我显示“3”。
所以,吐司比较慢,尊重计时器 我该如何解决?

3 个答案:

答案 0 :(得分:2)

不应该以这种方式使用

Toast Toast.LENGTH_SHORT 会在消失之前保持3秒钟,但计时器会每秒打勾,所以Toast很慢。

如果您想向用户显示计时器,那么您必须使用 TextView ,如果您想要自己的计时器,那么您可以使用Log.d();

更新: - 经过一点搜索后,我发现你无法为自定义时间设置Toast。 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);

答案 1 :(得分:0)

如果Toast快速连续出现,它们会将Toast排队。所以会发生的事实是,实际的嘀嗒声和吐司之间的延迟会逐渐消失。这意味着对于许多蜱虫来说,祝酒词开始落后。一个简单的解决方法是减少Toasts的数量。

答案 2 :(得分:0)

onFinish-> toast.cancel()

  
  final Toast showToast = Toast.makeText(this, "test ya!!! i'm Strtoint", Toast.LENGTH_LONG); 

     // Set the countdown 
     CountDownTimer toastCountDown = new CountDownTimer(10000, 1000) //if set 1sec ->1000 ms
     {
            public void onTick(long timeRemaining) {
              showToast.show();
            }
            public void onFinish() {
              showtoast.cancel();
            }
     };

      // Show the toast and starts the countdown
      showToast.show();
      toastCountDown.start();
     }