Android使用Chronometer實(shí)現(xiàn)計(jì)時(shí)功能
作者:Reathin
Chronometer控件適用于需要精確計(jì)時(shí)和時(shí)間顯示的場(chǎng)景。它可以提供直觀的時(shí)間顯示,并且可以通過編程方式控制計(jì)時(shí)的起始點(diǎn)和計(jì)時(shí)長度。
在Android開發(fā)過程中,計(jì)時(shí)控件是經(jīng)常回使用到的,在Android控件庫中有一個(gè)能快捷實(shí)現(xiàn)計(jì)時(shí)功能的控件Chronometer。用于顯示從某個(gè)起始時(shí)間點(diǎn)開始經(jīng)過的時(shí)間。它繼承自TextView,顯示的是從一個(gè)起始時(shí)間開始,一共過去了多長時(shí)間。
Chronometer方法
- getBase():返回時(shí)間。
- setBase(long base):設(shè)置計(jì)時(shí)器的起始時(shí)間。
- start():開始計(jì)時(shí)。
- stop():停止計(jì)時(shí)。
- setFormat(String format):設(shè)置顯示時(shí)間的格式,內(nèi)容可以是"%s",也可以添加額外的文字,如"計(jì)時(shí)器%s",也可以是"mm:ss"或"hh:mm:ss"。
- setOnChronometerTickListener(Chronometer.OnChronometerTickListener listener):為計(jì)時(shí)器綁定監(jiān)聽事件。
「注意」 使用Chronometer的stop方法時(shí),只是停止刷新計(jì)時(shí)器的時(shí)間顯示,在后臺(tái)并沒有停止計(jì)時(shí)。再次恢復(fù)計(jì)時(shí)時(shí),并不是從停下的時(shí)間開始計(jì)時(shí)。Chronometer的setFormat(String format)方法并不能改變時(shí)間顯示格式,Chronometer顯示格式為00:00:00。
Chronometer使用
- 在布局文件中添加Chronometer控件:
<Chronometer
android:id="@+id/mChronometer"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="24sp" />
- 在Activity或Fragment中獲取Chronometer實(shí)例,并設(shè)置基本時(shí)間:
Chronometer mChronometer = findViewById(R.id.mChronometer);
mChronometer.setBase(SystemClock.elapsedRealtime());
- 啟動(dòng)計(jì)時(shí)器:
startButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mChronometer.start();
}
});
- 停止計(jì)時(shí)器:
stopButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mChronometer.stop();
}
});
- 設(shè)置計(jì)時(shí)器格式:
mChronometer.setFormat("mm:ss"); // 顯示格式為mm:ss,例如03:45
- 添加計(jì)時(shí)器監(jiān)聽器:
mChronometer.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() {
@Override
public void onChronometerTick(Chronometer chronometer) {
long elapsedMillis = SystemClock.elapsedRealtime() - chronometer.getBase();
if (elapsedMillis >= 60000) {
// 如果計(jì)時(shí)器超過了60秒,彈出Toast
Toast.makeText(this, "60秒了", Toast.LENGTH_SHORT).show();
}
}
});
Chronometer使用場(chǎng)景
- 「運(yùn)動(dòng)訓(xùn)練計(jì)時(shí)」:Chronometer可以用于各種運(yùn)動(dòng)訓(xùn)練中,例如跑步、游泳、健身等。通過記錄每個(gè)訓(xùn)練階段所需的時(shí)間,可以更好地掌握自己的訓(xùn)練進(jìn)度。
- 「比賽計(jì)時(shí)」:Chronometer可以用于各種比賽計(jì)時(shí)中,例如田徑比賽、游泳比賽、車輛競(jìng)速等。通過記錄每個(gè)選手所需的時(shí)間,可以更準(zhǔn)確地評(píng)估他們的表現(xiàn)。
- 「實(shí)驗(yàn)測(cè)量」:Chronometer可以用于各種實(shí)驗(yàn)測(cè)量中,例如化學(xué)反應(yīng)時(shí)間、物理運(yùn)動(dòng)時(shí)間等。通過記錄每個(gè)階段所需的時(shí)間,可以更精確地獲得實(shí)驗(yàn)數(shù)據(jù)。
- 「倒計(jì)時(shí)功能」:Chronometer也可以用于實(shí)現(xiàn)倒計(jì)時(shí)功能,例如定時(shí)器、倒計(jì)時(shí)器等。通過設(shè)置起始時(shí)間,并使用Chronometer來顯示經(jīng)過的時(shí)間,可以實(shí)現(xiàn)精確的倒計(jì)時(shí)功能。
- 「時(shí)間跟蹤」:在需要跟蹤一段時(shí)間的場(chǎng)景下,Chronometer也可以派上用場(chǎng)。例如,跟蹤用戶完成某項(xiàng)任務(wù)所花費(fèi)的時(shí)間,或者跟蹤某個(gè)事件發(fā)生的時(shí)間。
Chronometer控件適用于需要精確計(jì)時(shí)和時(shí)間顯示的場(chǎng)景。它可以提供直觀的時(shí)間顯示,并且可以通過編程方式控制計(jì)時(shí)的起始點(diǎn)和計(jì)時(shí)長度。
責(zé)任編輯:武曉燕
來源:
沐雨花飛蝶