你的位置:首页 > 操作系统

[操作系统]计时器(Chronometer)的使用


安卓提供了一个计时器组件:Chronometer,该组件extends TextView,因此都会显示一段文本,但是它显示的时间是从某个起始时间开始过去了多少时间,它只提供了android:format一个属性用于指定计时器的计数格式。

Chronometer的用法很简单,它支持如下用法:

getBase():返回时间。

setBase(long base):设置计时器的起始时间。

start():开始计时。

stop():停止计时。

setFormat(String format):设置显示时间的格式。

setOnChronometerTickListener(Chronometer.OnChronometerTickListener listener):为计时器绑定监听事件。

 

下面程序设计了一个一分钟的计时器。

首先:

<??><LinearLayout ="http://schemas.android.com/apk/res/android"  android:orientation="vertical" android:layout_width="match_parent"  android:layout_height="match_parent">  <Chronometer    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:id="@+id/chronometer"    android:textColor="#ff0303"    android:textSize="12pt"    android:layout_gravity="center_horizontal"    android:focusable="true" />  <Button    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:text="启动"    android:id="@+id/button"    android:layout_gravity="center_horizontal" /></LinearLayout>

其次:通过setOnChronometerTickListener(Chronometer.OnChronometerTickListener listener)函数为计时器绑定监听事件。程序定义了一个Chronometer组件和Button组件。当用户单击Button时开始计时,计时时间为一分钟。

package happy.chronometer;import android.os.Bundle;import android.os.SystemClock;import android.support.design.widget.FloatingActionButton;import android.support.design.widget.Snackbar;import android.support.v7.app.AppCompatActivity;import android.support.v7.widget.Toolbar;import android.view.View;import android.view.Menu;import android.view.MenuItem;import android.widget.Button;import android.widget.Chronometer;public class MainActivity extends AppCompatActivity {  Chronometer ch ;  Button start ;  @Override  protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.test);//    获取计时器组件    ch=(Chronometer)findViewById(R.id.chronometer);//    获取开始组件    start = (Button)findViewById(R.id.button);    start.setOnClickListener(new View.OnClickListener() {      @Override      public void onClick(View v) {        //设置开始计时时间        ch.setBase(SystemClock.elapsedRealtime());        //启动计时器        ch.start();      }    });    //为计时器绑定监听事件    ch.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener()    {      @Override      public void onChronometerTick(Chronometer ch)      {        // 如果从开始计时到现在超过了60s        if (SystemClock.elapsedRealtime() - ch.getBase() > 60 * 1000)        {          ch.stop();          start.setEnabled(true);        }      }    });  }}

 最后:我们可以看到如上的效果,其中时间为已经流逝的时间。