Android Chronometer控件實現(xiàn)計時器函數(shù)詳解
本文為大家演示了如何使用Chronometer控件實現(xiàn)Android計時器的實例。
先貼上最終的實現(xiàn)效果圖:

Android計時器實現(xiàn)思路
使用Chronometer控件實現(xiàn)計器的操作。通過設(shè)置setBase(long base)來設(shè)置初始時間,然后為其添加一個 setOnChronometerTickListener(Chronometer.OnChronometerTickListener l)事件來判斷時間是否到了,然后再調(diào)用其stop()方法實現(xiàn)停止計時。
Android計時器實現(xiàn)代碼
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="設(shè)置時間:" />
<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());
}
// 設(shè)置開始講時時間
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) {
// 如果開始計時到現(xiàn)在超過了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();
}
}
以上就是關(guān)于Android Chronometer控件實現(xiàn)計時器的相關(guān)函數(shù),希望對大家學(xué)習(xí)Android軟件編程有所幫助。
- Android studio 運行main 函數(shù)的方法
- 詳解Android應(yīng)用main函數(shù)的調(diào)用
- Android Studio生成函數(shù)注釋的實現(xiàn)方法
- Android自定義View的三個構(gòu)造函數(shù)
- Android編程計算函數(shù)時間戳的相關(guān)方法總結(jié)
- Android自定義view 你所需要知道的基本函數(shù)總結(jié)
- Android 自定義View的構(gòu)造函數(shù)詳細介紹
- Android編程之匿名內(nèi)部類與回調(diào)函數(shù)用法分析
- Android自定義View構(gòu)造函數(shù)詳解
- Android nativePollOnce函數(shù)解析
相關(guān)文章
探討:android項目開發(fā) 統(tǒng)籌兼顧 需要考慮的因素
本篇文章是對基于android項目開發(fā) 統(tǒng)籌兼顧 需要考慮的因素進行了詳細的分析介紹,需要的朋友參考下2013-06-06
Android中編寫屬性動畫PropertyAnimation的進階實例
這篇文章主要介紹了Android中編寫屬性動畫PropertyAnimation的進階實例,包括一些縮放和淡入淡出效果的設(shè)計,強大且不算復(fù)雜,需要的朋友可以參考下2016-04-04
Android實現(xiàn)旋轉(zhuǎn)動畫的兩種方式案例詳解
這篇文章主要介紹了Android實現(xiàn)旋轉(zhuǎn)動畫的兩種方式,需要的朋友可以參考下2021-08-08
Android查看電池電量的方法(基于BroadcastReceiver)
這篇文章主要介紹了Android查看電池電量的方法,結(jié)合實例分析了Android使用BroadcastReceiver實現(xiàn)針對電池電量的查詢技巧,需要的朋友可以參考下2016-01-01

