android之計時器(Chronometer)的使用以及常用的方法

來源:互聯網
上載者:User

在Android的SDK中,為我們提供了一個計時器,這個計時器稱為Chronometer,我們可以成它為Android的一個組件,同時它也具備自己專屬的方法。下面我們舉例介紹下這個計時器的使用以及常用的方法。

跟其他UI組件一樣,當我們要使用它的時候,在布局檔案中對應的位置聲明定義計時器的位置與屬性。

複製代碼 代碼如下:<Chronometer
android:id=”@+id/chronometer”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
/>

在程式中使用定義的計時器,並設定顯示時間格式。 複製代碼 代碼如下:chronometer = (Chronometer) findViewById(R.id.chronometer);
chronometer.setFormat(“計時時間:(%s)”);

這樣程式運行後就會顯示以上設定的計時器內容,另外我們在程式中可以通過以下幾個常用的計時器方法控制計時器的計時工作。 複製代碼 代碼如下:A、Chronometer.start();//計時開始
B、Chronometer.stop();//暫停計時
C、Chronometer.setBase(SystemClock.elapsedRealtime());//複位計時器,停止計時

Android就是通過這樣的一個控制項,讓我們可以輕鬆地在程式中實現計時的工作,從而免去複雜的線程與多餘的代碼編寫,節省了大量的開發時間。

Android之計時器(Chronometer)的用法
第一步:布局檔案
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:orientation="vertical" >
<Chronometer
android:id="@+id/myChronometer"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<Button
android:id="@+id/btn_start"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="開始" />
<Button
android:id="@+id/btn_stop"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="停止" />
<Button
android:id="@+id/btn_base"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="複位" />
<Button
android:id="@+id/btn_format"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="格式化" />
</LinearLayout>
</LinearLayout>

第二步:MainActivity
代碼如下: 複製代碼 代碼如下:package net.loonggg.chronometer;
import android.app.Activity;
import android.os.Bundle;
import android.os.SystemClock;
import android.os.Vibrator;
import android.view.View;
import android.widget.Button;
import android.widget.Chronometer;
import android.widget.Chronometer.OnChronometerTickListener;
public class MainActivity extends Activity {
private Vibrator vibrator;
private Chronometer chronometer; // 計時組件
private Button btn_start;
private Button btn_stop;
private Button btn_base;
private Button btn_format;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE);// 擷取震動服務
chronometer = (Chronometer) findViewById(R.id.myChronometer);
chronometer
.setOnChronometerTickListener(new OnChronometerTickListenerImpl()); // 給計時組件設定艦艇對象
btn_start = (Button) findViewById(R.id.btn_start);
btn_stop = (Button) findViewById(R.id.btn_stop);
btn_base = (Button) findViewById(R.id.btn_base);
btn_format = (Button) findViewById(R.id.btn_format);
btn_start.setOnClickListener(new ButtonClickListener());
btn_stop.setOnClickListener(new ButtonClickListener());
btn_base.setOnClickListener(new ButtonClickListener());
btn_format.setOnClickListener(new ButtonClickListener());
}
public class OnChronometerTickListenerImpl implements // 計時監聽事件,隨時隨地的監聽時間的變化
OnChronometerTickListener {
@Override
public void onChronometerTick(Chronometer chronometer) {
String time = chronometer.getText().toString();
if ("00:05".equals(time)) {// 判斷五秒之後,讓手機震動
vibrator.vibrate(new long[] { 1000, 10, 100, 10 }, 0);// 設定震動周期和是否迴圈震動,如果不想迴圈震動把0改為-1
}
}
}
public class ButtonClickListener implements View.OnClickListener {
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_start:
chronometer.start();// 開始計時
break;
case R.id.btn_stop:
chronometer.stop();// 停止計時
break;
case R.id.btn_base:
chronometer.setBase(SystemClock.elapsedRealtime());// 複位鍵
break;
case R.id.btn_format:
chronometer.setFormat("顯示時間:%s.");// 更改時間顯示格式
break;
default:
break;
}
}
}
}

第三步:註冊許可權複製代碼 代碼如下:<uses-permission android:name="android.permission.VIBRATE" />

囧神的世界你不懂,蟲哥的生活你沒有,只有程式猿的世界大家才知道。程式猿們,為了自己的精彩世界奮鬥吧,努力吧!加油……

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.