計時器:Chronometer

來源:互聯網
上載者:User

在Android SDK中提供了多種時間服務。這些時間服務主要處理在一定時間間隔或未來某一時間發生的任務。Android系統中的時間服務的範圍既可以是應用程式本身,也可以是整個Android系統。本節將詳細介紹這些時間服務的使用方法,並給出大量的執行個體供讀者學習。

 計時器:Chronometer

本節的例子代碼所在的工程目錄是src/ch08/ch08_chronometer

Chronometer是TextView的子類,也是一個Android組件。這個組件可以用1秒的時間間隔進行計時,並顯示出計時結果。

Chronometer類有3個重要的方法:start、stop和setBase,其中start方法表示開始計時;stop方法表示停止計時;setBase方法表示重新計時。start和stop方法沒有任何參數,setBase方法有一個參數,表示開始計時的基準時間。如果要從當前時刻重新計時,可以將該參數值設為SystemClock.elapsedRealtime()。

還可以對Chronometer組件做進一步設定。在預設情況下,Chronometer組件只輸出MM:SS或H:MM:SS的時間格式。例如,當計時到1分20秒時,Chronometer組件會顯示01:20。如果想改變顯示的資訊內容,可以使用Chronometer類的setFormat方法。該方法需要一個String變數,並使用"%s"表示計時資訊。例如,使用setFormat("計時資訊:%s")設定顯示資訊,Chronometer組件會顯示如下計時資訊:

計時資訊:10:20

Chronometer組件還可以通過onChronometerTick事件方法來捕捉計時動作。該方法1秒調用一次。要想使用onChronometerTick事件方法,必須實現如下介面:

 
  1. android.widget.Chronometer.OnChronometerTickListener 

在本例中有3個按鈕,分別用來開始、停止和重設計時器,並通過onChronometerTick事件方法顯示目前時間,代碼如下:

 
  1. package net.blogjava.mobile;  
  2.  
  3. import java.text.SimpleDateFormat;  
  4. import java.util.Date;  
  5. import android.app.Activity;  
  6. import android.os.Bundle;  
  7. import android.os.SystemClock;  
  8. import android.view.View;  
  9. import android.view.View.OnClickListener;  
  10. import android.widget.Button;  
  11. import android.widget.Chronometer;  
  12. import android.widget.TextView;  
  13. import android.widget.Chronometer.OnChronometerTickListener;  
  14.  
  15. public class Main extends Activity implements 
    OnClickListener, OnChronometerTickListener  
  16. {  
  17.     private Chronometer chronometer;  
  18.     private TextView tvTime;  
  19.     @Override  
  20.     public void onClick(View view)  
  21.     {  
  22.         switch (view.getId())  
  23.         {  
  24.             case R.id.btnStart:  
  25.                 //  開始計時器  
  26.                 chronometer.start();  
  27.                 break;  
  28.             case R.id.btnStop:  
  29.                 //  停止計時器  
  30.                 chronometer.stop();  
  31.                 break;  
  32.             case R.id.btnReset  
  33.                 //  重設計時器:  
  34.                 chronometer.setBase(SystemClock.elapsedRealtime());  
  35.                 break;  
  36.         }  
  37.     }  
  38.     @Override  
  39.     public void onChronometerTick(Chronometer chronometer)  
  40.     {  
  41.         SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");  
  42.         //  將目前時間顯示在TextView組件中  
  43.         tvTime.setText("目前時間:" + sdf.format(new Date()));  
  44.     }  
  45.     @Override  
  46.     public void onCreate(Bundle savedInstanceState)  
  47.     {  
  48.         super.onCreate(savedInstanceState);  
  49.         setContentView(R.layout.main);  
  50.         tvTime = (TextView)findViewById(R.id.tvTime);  
  51.         Button btnStart = (Button) findViewById(R.id.btnStart);  
  52.         Button btnStop = (Button) findViewById(R.id.btnStop);  
  53.         Button btnReset = (Button) findViewById(R.id.btnReset);  
  54.         chronometer = (Chronometer) findViewById(R.id.chronometer);  
  55.         btnStart.setOnClickListener(this);  
  56.         btnStop.setOnClickListener(this);  
  57.         btnReset.setOnClickListener(this);  
  58.         //  設定計時監聽事件  
  59.         chronometer.setOnChronometerTickListener(this);  
  60.         //  設定計時資訊的格式  
  61.         chronometer.setFormat("計時器:%s");  
  62.     }  

運行本節的例子,並單擊【開始】按鈕,在按鈕下方會顯示計時資訊,在按鈕的上方會顯示目前時間,8.16所示。單擊【重設】按鈕後,按鈕下方的計時資訊會從"計時器:00:00"開始顯示。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.