Android练习-----计时器(Chronometer)

来源:互联网 发布:linux vi怎么保存 编辑:程序博客网 时间:2024/05/18 00:32

计时器(Chronometer ) 控件可以显示从某个起始时间开始,一共过去了多长时间。由于该控件继承 TextView,所以它以文本的形式显示内容。一般在使用该控件的时候,会调用以下几个方法

  • setBase(long base) 设置计时器计时的基准(开始)时间
  • setFormat(String format) 设置用于格式化显示格式的字符串,计时器将用“MM:SS”或 “H:MM:SS”形式的值替换格式化字符串中的第一个“%s”
  • setOnChronometerTickListener(OnChronometerTickListener listener) 设置计时器变化时调用的监听器
  • start() 开始计时,该操作不会影响到由 setBase(long base) 设置的基准(开始)时间,仅影响显示的视图
  • stop() 停止计时,该操作不会影响到由 setBase(long base) 设置的基准(开始)时间,仅影响显示的视图

在使用计时器控件时,需要在XML布局文件中添加< Chronometer >标记,代码如下

<Chronometer         android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:id="@+id/chronometer"/>

在Eclipse中新建一个Android项目,名称为TestChronometer,在屏幕添加一个计时器
(1) 在res/layout 目录下修改 activity_main.xml 文件,然后添加一个 Chronometer 控件和一个普通按钮控件,代码如下

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="horizontal">    <Chronometer         android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:id="@+id/chronometer"/>    <Button         android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="@string/rest"        android:id="@+id/rest"        android:visibility="gone"        /></LinearLayout>

上述代码中,Button 控件的 android:visibility 属性用来设置该控件的可见与不可见的状态,设置为”gone”,表示不可见并且不占用空间


(2) 在MainActivity.java 文件中,获取计时器控件,并设置起始时间和显示时间的格式,开启计时器等,代码如下

import android.os.Bundle;import android.os.SystemClock;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.Chronometer;import android.widget.Chronometer.OnChronometerTickListener;import android.app.Activity;public class MainActivity extends Activity {    private Button rest = null;    private Chronometer chronometer = null;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        chronometer  = (Chronometer) findViewById(R.id.chronometer);        rest  = (Button) findViewById(R.id.rest);        chronometer .setBase(SystemClock.elapsedRealtime());            //设置起始时间        chronometer .setFormat("已用时间:%s");                      //设置显示时间格式        chronometer .start();                           //开启计时器        chronometer .setOnChronometerTickListener(new  chronometerListener());        rest.setOnClickListener(new restOnClickListener());    }    class restOnClickListener implements OnClickListener{        public void onClick(View v) {            chronometer.setBase(SystemClock.elapsedRealtime());         //设置起始时间            chronometer.start();                    //开启计时器            rest.setVisibility(View.INVISIBLE);     //设置按钮不可见        }}    class chronometerListener implements OnChronometerTickListener{        public void onChronometerTick(Chronometer chronometer) {            if (SystemClock.elapsedRealtime() - chronometer.getBase() >= 10000) {                chronometer.stop();         //停止计时器                rest.setVisibility(View.VISIBLE);            }        }    }}

上述代码中,先获取到计时器控件,然后使用 setBase(SystemClock.elapsedRealtime()) 方法为计时器设置起始时间, setFormat() 为计时器设置格式,然后使用 start() 方法开启计时器。在监听器中判断如果 (SystemClock.elapsedRealtime() - chronometer.getBase() >= 10000) 为真,则使用 stop() 方法来停止计时器,并且使用 setVisibility() 方法设置 Button 控件可以。在按钮控件的监听器中为计时器添加了起始时间和开启计时器的方法,在单击按钮的时候,计时器将重新开始,同时Button控件设置为不可见。


运行该项目,计时器显示效果如图:
这里写图片描述


这里写图片描述

0 0