安卓案例-計時器

安卓提供了一個計時器的組件:Chronometer ,該組件繼承自 TextView ,Chronometer 提供了一個 android:format 屬性,用於指定計時器的計時格式。

Chronometer 常用方法

  • setBase(long base) :設置計時器的起始時間
  • setFormat(String format):設置顯示時間格式
  • start():開始計時
  • stop():停止計時
  • setOnChronometerTickListener(Chronometer.OnChronometerTickListener listener):爲計時器綁定事件監聽器,當計時器改變時觸發該監聽器。

本案例效果圖如下

image

佈局文件代碼如下

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:gravity="center_horizontal"
    tools:context="pub.weber.bym.chronometer.MainActivity">

    <Chronometer
        android:id="@+id/test"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />
    <Button
        android:id="@+id/start"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="開始"
        />
</LinearLayout>

MainActivity 代碼如下

public class MainActivity extends AppCompatActivity {

    Chronometer ch;
    Button start;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // 獲取計時器組件
        ch = (Chronometer) findViewById(R.id.test);
        start = (Button) findViewById(R.id.start);
        start.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 設置開始計時時間
                ch.setBase(SystemClock.elapsedRealtime());
                ch.start();
                start.setEnabled(false);
            }
        });
        ch.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() {
            @Override
            public void onChronometerTick(Chronometer chronometer) {
                // 如果開始計時到現在超過20s 停止計時
                if (SystemClock.elapsedRealtime() - ch.getBase()> 20*1000){
                    ch.stop();
                    start.setEnabled(true);
                }
            }
        });
    }
}

程序中用到的 SystemClock 類 是一個獲取系統時間、運行時間的工具類。。。。

by web開發者 更多相關內容請訪問: http://weber.pub/

本文地址: http://weber.pub/安卓筆記16(案例)-計時器/324.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章