Android應用小實例--炫酷計時器

這是學習Chronometer控件做的一個小例子,貼上自己的代碼,與大家交流。

 

實現效果:

 

 

實現思路:

使用Chronometer控件實現計器的操作。通過設置setBase(long base)來設置初始時間,然後爲其添加一個setOnChronometerTickListener(Chronometer.OnChronometerTickListener l)事件來判斷時間是否到了,然後再調用其stop()方法實現停止計時。

實現代碼:

main.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/back"
    android:gravity="center"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_margin="10dip"
        android:orientation="horizontal" >

        <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="4"
            android:gravity="center"
            android:text="設置時間:" />

        <EditText
            android:id="@+id/edt_settime"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:inputType="number" />
    </LinearLayout>

    <Chronometer
        android:id="@+id/chronometer"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:textColor="#ff0000"
        android:textSize="60dip" />

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_margin="10dip"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/btnStart"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="開始記時" />

        <Button
            android:id="@+id/btnStop"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="停止記時" />

        <Button
            android:id="@+id/btnReset"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="重置" />
    </LinearLayout>

</LinearLayout>


 

Activity代碼:

package com.jiahui.chronometer;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.os.SystemClock;
import android.text.format.Time;
import android.view.View;
import android.widget.Button;
import android.widget.Chronometer;
import android.widget.EditText;

public class ChronometerDemoActivity extends Activity {

	private int startTime = 0;

	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		final Chronometer chronometer = (Chronometer) findViewById(R.id.chronometer);

		Button btnStart = (Button) findViewById(R.id.btnStart);

		Button btnStop = (Button) findViewById(R.id.btnStop);

		Button btnRest = (Button) findViewById(R.id.btnReset);

		final EditText edtSetTime = (EditText) findViewById(R.id.edt_settime);

		btnStart.setOnClickListener(new View.OnClickListener() {

			@Override
			public void onClick(View v) {

				System.out.println("--開始記時---");
				String ss = edtSetTime.getText().toString();
				if (!(ss.equals("") && ss != null)) {
					startTime = Integer.parseInt(edtSetTime.getText()
							.toString());
				}
				// 設置開始講時時間
				chronometer.setBase(SystemClock.elapsedRealtime());
				// 開始記時
				chronometer.start();

			}
		});

		btnStop.setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View v) {
				// 停止
				chronometer.stop();
			}

		});

		// 重置
		btnRest.setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View v) {
				chronometer.setBase(SystemClock.elapsedRealtime());

			}

		});
		chronometer
				.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() {
					@Override
					public void onChronometerTick(Chronometer chronometer) {
						// 如果開始計時到現在超過了startime秒
						if (SystemClock.elapsedRealtime()
								- chronometer.getBase() > startTime * 1000) {
							chronometer.stop();
							// 給用戶提示
							showDialog();
						}
					}
				});
	}

	protected void showDialog() {
		AlertDialog.Builder builder = new AlertDialog.Builder(this);
		 builder.setIcon(R.drawable.eb28d25);
		builder.setTitle("警告").setMessage("時間到")
				.setPositiveButton("確定", new DialogInterface.OnClickListener() {
					@Override
					public void onClick(DialogInterface dialog, int which) {
					}
				});

		AlertDialog dialog = builder.create();
		dialog.show();
	}
}


發現的問題:一直不知道怎麼去設置讓其時間顯示爲分:秒:毫秒。在其setFormat方法裏不知道如何設置,希望大家知道的話告知之,我再改進下程序。謝謝 

 

  如轉載請聲明文章出處:http://blog.csdn.net/jiahui524 

源代碼下載:http://download.csdn.net/detail/jiahui524/3786779

 

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