【问题标题】:How can I pause the timer in android?如何在android中暂停计时器?
【发布时间】:2012-03-26 16:30:38
【问题描述】:

我已经通过链接http://dewful.com/?tag=basic-android-timer 了解android 中的计时器应用程序。它工作正常。 我需要添加暂停按钮来停止计时器,并添加一个播放按钮来从我停止的位置重新启动计时器。我可以完成这项任务吗?

我的代码:

long timervalue = 50000;
CountDownTimer Counter1 = new CountDownTimer(timervalue, 1000)
{
    public void onTick(final long millisUntilFinished)
    {
        time.setText(formatTime(millisUntilFinished));
        pause.setOnClickListener(new View.OnClickListener()
        {
            public void onClick(View v)
            {
                Counter1.cancel();
            }
        }
        );
        resume.setOnClickListener(new View.OnClickListener()
        {
            public void onClick(View v)
            {
                Counter1.start();
                timervalue = Long.parseLong(output);
                System.out.println("paused timer value resumed"+timervalue);
                Counter1.onTick(timervalue);
            }
        }
        );
    }
    public void onFinish()
    {
        Counter1.cancel();
    }
};
public String formatTime(long millis)
{
    output = "00";
    seconds = millis / 1000;
    seconds = seconds % 60;
    System.out.println("seconds here"+seconds);
    String secondsD = String.valueOf(seconds);
    System.out.println("secondsD here"+secondsD);
    if (seconds <
    10)             secondsD = "0" + seconds;
    System.out.println("secondsD here in if"+secondsD);
    output = secondsD;
    return output;
}

在上面的代码中,当单击恢复按钮时,计时器再次从 50 秒开始,我不希望这样。它应该从我暂停的时间开始。请帮助我解决这个问题......我从一个星期以来一直在为此苦苦挣扎......

非常感谢您的帮助............

【问题讨论】:

  • 请查看以下链接...希望对您有所帮助。 stackoverflow.com/questions/2098642/…
  • 嗨,谢谢你的链接....我已经通过了..你能告诉我如何在我的代码中应用它吗?

标签: android


【解决方案1】:
public class TimerActivity extends Activity
{
    EditText e1;
    MyCount counter;
    Long s1;
    /** Called when the activity is first created. */ 
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        e1=(EditText)findViewById(R.id.editText1);
        counter= new MyCount(5000,1000);
        counter.start();
    }
    public void asdf(View v)
    {
        switch(v.getId())
        {
            case R.id.button1:         counter.cancel();
            break;
            case R.id.button2:         counter= new MyCount(s1,1000);
            counter.start();
        }
    }
    public class MyCount extends CountDownTimer
    {
        public MyCount(long millisInFuture, long countDownInterval)
        {
            super(millisInFuture, countDownInterval);
        }
        @Override     public void onFinish()
        {
            e1.setText("DONE");
        }
        @Override     public void onTick(long millisUntilFinished)
        {
            s1=millisUntilFinished;
            e1.setText("left:"+millisUntilFinished/1000);
        }
    }
}

【讨论】:

  • 为什么要使用 extends ?我可以使用新的 CountDownTimer
【解决方案2】:
public void time(long m){
    timer=new CountDownTimer(m, 1000) {

            public void onTick(long millisUntilFinished) {

                tv_timer.setText(formatTime(millisUntilFinished));

            }

            public void onFinish() {
                tv_timer.setText("done!");
            }

         }.start();

 }

我已将它用于计时器,我已将按钮用于暂停并使用此

    case R.id.bT_PAUSE:
    String s_time = null;

    try{
    if(Bt_pause.getText().equals("PAUSE")){

    s_time=tv_timer.getText().toString();
    timer.cancel();
    String[] Pause_time=s_time.split(":");
    m=Long.parseLong(Pause_time[0].trim());
    n=Long.parseLong(Pause_time[1].trim());
    m=(m*60)+n;
    m=m*1000;
    Bt_pause.setText("RESUME");

    }else if(Bt_pause.getText().equals("RESUME")){
        //min_longmillis=Long.parseLong(sss);
        //min_longmillis=min_longmillis*1000*60;
        //min_longmillis=m;
        //timer.start();
        Toast.makeText(this,String.valueOf(m),Toast.LENGTH_SHORT).show();
        time(m);
        Bt_pause.setText("PAUSE");
    }
    }catch(Exception e){
        Toast.makeText(this,e.toString(),Toast.LENGTH_SHORT).show();
    }
    break;

这是格式化时间

public String formatTime(long millis) {  
    String output = "00:00";  
    long seconds = millis / 1000;  
    long minutes = seconds / 60;  

    seconds = seconds % 60;  
    minutes = minutes % 60;  

    String sec = String.valueOf(seconds);  
    String min = String.valueOf(minutes);  

    if (seconds < 10)  
        sec = "0" + seconds;  
    if (minutes < 10)  
        min= "0" + minutes;  

    output = min + " : " + sec;  
    return output;
}//formatTime

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-09
    • 1970-01-01
    • 2012-01-08
    • 2012-06-06
    相关资源
    最近更新 更多