2016-04-21 81 views

回答

1

你可以通过使用简单的逻辑来做到这一点,就像这样 - 当你点击按钮时,系统启动一个计时器并将标志设置为真。这个计时器将启动一个TimerTask,它将开始计算秒数。当你再次点击该按钮时,它将该标志设置为假,并且计时器将停止。在发生这种情况时,TimerTask会每1000ms增加一次秒数,然后更新按钮的文本以显示秒数作为计时表。

这里有一个小片段让你开始。

Timer timer; 
CustomTask cust1; 

boolean flag = false; 
int seconds=0, hours=0, minutes=0; 

button.setText("H:"+hours+"M:"+minutes+"S:"+seconds); 

button.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      if(!flag){ 
       if(timer != null){ 
        timer.cancel(); 
       } 
       timer = new Timer(); 
       cust1 = new CustomTask(); 
       timer.schedule(cust1, 1000, 1000); 

       flag = true; 

      }else if(flag){ 
       flag = false; 
       if (timer!=null){ 
        timer.cancel(); 
        timer = null; 
       } 
      } 
     } 
}); 

class CustomTask extends TimerTask { 

    @Override 
    public void run() { 
     seconds++; 
     if(seconds == 60){ 
      seconds = 0; 
      minutes++; 
     } 
     if(minutes == 60){ 
      minutes=0; 
      hours++; 
     } 
     runOnUiThread(new Runnable(){ 

     @Override 
     public void run() { 
      button.setText("H:"+hours+"M:"+minutes+"S:"+seconds); 
     }}); 
    } 
} 
+0

但会在我的按钮每秒显示一个天文台秒我想更新按钮文本到当前秒数 –

+1

我会更新答案。 – SanVed

+0

非常感谢兄弟 –

相关问题