Android_Chronometer計時器

最近作一個項目用到Handler 和Message ,開始時不是很明白,不瞭解其中的內部機制,因此開發起來有點難度,以後本身找了Android 時間服務 這一節的內容,總結了一點關於時間的知識,在這裏大概寫一下,也給更多有須要的童鞋參考參考:java

1. 這裏首先來的是定時器Chronometer ,這是一個組件,在可視化視圖中能夠直接拖拽過去,而後本身設置相關的屬性,我平時直接邊界XML佈局文件實現,我的感受這樣思路不會混亂。定時器比較簡單,沒有不少複雜的方法,你們只要記住重要的3個方法:start(); stop(); setBase(); 前兩個方法沒有參數,是啓動和中止計時器的方法,後面的是重置計時器的,能夠有參數,參數是從那個時間開始計時。先來看看效果圖:android

 

步驟:app

 1】 佈局採用線性佈局,本身砌上去就好了。很少說ide

 2】onChronometerTick事件方法是計時器每秒回調的方法,咱們能夠用它來更新UI,看下面的代碼:佈局

package com.android.android_chronometer;

import java.text.SimpleDateFormat;
import java.util.Date;
import android.os.Bundle;
import android.os.SystemClock;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Chronometer;
import android.widget.Chronometer.OnChronometerTickListener;
import android.widget.TextView;

public class MainActivity extends Activity implements OnClickListener,
        OnChronometerTickListener {

    private Button btnStart, btnStop, btnReset;
    private TextView textViewCurrentTime;
    // 定時器,一個能夠本身設定開始時間的定時器
    private Chronometer chronometer;
    private SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss");;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        btnStart = (Button) this.findViewById(R.id.buttonBegin);
        btnStop = (Button) this.findViewById(R.id.buttonStop);
        btnReset = (Button) this.findViewById(R.id.buttonReset);
        textViewCurrentTime = (TextView) this
                .findViewById(R.id.textViewCurrentTime);
        chronometer = (Chronometer) this.findViewById(R.id.chronometer1);

        btnStart.setOnClickListener(this);
        btnStop.setOnClickListener(this);
        btnReset.setOnClickListener(this);

        chronometer.setOnChronometerTickListener(this);
        // 設定顯示的計時格式
        chronometer.setFormat("計時器:%s");
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        switch (v.getId()) {
        case R.id.buttonBegin:
            // 計時器啓動
            chronometer.start();
            break;
        case R.id.buttonStop:
            // 計時器中止
            chronometer.stop();
            break;
        default:
            // 以當前時刻從新計時
            chronometer.setBase(SystemClock.elapsedRealtime());
            break;
        }
    }

    /** 定時器沒秒回調的方法,這樣能夠在UI界面上更新數據 */
    @Override
    public void onChronometerTick(Chronometer chronometer) {
        // TODO Auto-generated method stub
        textViewCurrentTime.setText("當前時間:" + formatter.format(new Date()));
    }

} this


3】Handler 和Message 在後面的筆記中記錄。spa

相關文章
相關標籤/搜索