2011-04-21 45 views
5

在我的應用程序,我想顯示一個停止計時器的手錶。當我通過Google搜索時,我在開發者網站上發現了一個名爲Chronometer的選項。它看起來就像一個停止計時器手錶。天文臺不停止在Android

當我點擊開始按鈕時,我希望計時器開始工作,當我點擊暫停按鈕時,必須暫停計時器,一旦我點擊開始時它必須從停止時開始。

但在這個天文鐘它得到從0開始,當我點擊1分10秒暫停它會暫停。當我在5分鐘後再次點擊啓動時,計時器從6分10秒開始計數,即使在暫停計時器運行時,如何停止計時並在計時器停止時恢復計時。

以下是我的天文臺表

Start = (Button)findViewById(R.id.widget306); 
     Start.setOnClickListener(new View.OnClickListener() 
     { 
      @Override 
      public void onClick(View v) 
      { 
       chronometer.start();     
      } 
     }); 

     Stop = (Button)findViewById(R.id.widget307); 
     Stop.setOnClickListener(new View.OnClickListener() 
     { 
      @Override 
      public void onClick(View v) 
      { 
        chronometer.stop(); 
      } 
     }); 
    } 

回答

1

代碼從天文臺doc

停止計數。這不會影響 的基本設置從setBase(long), 只是視圖顯示。

我沒有任何的Android開發環境,現在,所以斜面探討更:(

編輯: 是它的code你已經根據你的代碼上看來使用setBase來?當前時間上停止

22

很抱歉,但我已經找到了自己的解決方案,它似乎要簡單得多:

  1. 在您的活動中,聲明一個成員變量(例如,lastPause)來記錄你的最後一個停頓的時間:

    private long lastPause;

  2. 啓動定時器(假設你的計時器的變量是CRONO):

    crono.setBase(SystemClock.elapsedRealtime());

    crono.start();

  3. 每次使用時暫停計時器:

    lastPause = SystemClock.elapsedRealtime();

    crono.stop();

  4. 每次使用恢復您的計時器:

    crono.setBase(crono.getBase() + SystemClock.elapsedRealtime() - lastPause);

    crono.start();

我沒有測試精度精確但因爲它似乎是好吧,我的眼睛:]

+0

它完美的爲我工作..謝謝! – Mausam 2012-06-18 09:40:32

+0

也適用於我! – Dan 2017-08-15 07:10:15

0

下面的工程奇蹟:

final long lastPause = SystemClock.elapsedRealtime(); 
mChronometer.stop(); 

final AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(mActivity) 
    .setCancelable(false) 
    .setMessage("Stop chronometer while AlertDialog is asking something.") 
    .setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int id) { 
      dialog.cancel(); 
      mChronometer.setBase(mChronometer.getBase() 
       + SystemClock.elapsedRealtime() 
       - lastPause); 
      mChronometer.start(); 
     } 
    }); 
alertDialogBuilder.create().show(); 

這個片段只是關於停止計時器並顯示一個AlertDialog。當對話框關閉時,天文鐘將從最後一個位置開始。