继承自TextView,因此都能显示文本。但是计时器并不显示当前时间,
只显示从某个时间开始,一共过去了多长时间
android:format=”计时:%s”
setBase(long):设置开始时间//设置时间基准
start():启动定时器
stop():停止定时期
SystemClock.elapsedRealtime()获取从开启手机到现在的毫秒数,包括待机时间,是一个工具类
通过按钮开始定时和结束定时
或者用下面定时器到时间后自动结束定时:
ch.setOnChronometerTickListener(OnChronometerTickListener listener)
如:1分钟停止定时
if(SystemClock.elapsedRealtime()-ch.getBase()>1*1000*60){ch.stop();}
<RelativeLayout 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"
tools:context="com.xspacing.chronometer.MainActivity" >
<Chronometer
android:id="@+id/main_chronometer"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_centerInParent="true"
android:layout_marginLeft="128dp"
android:layout_marginTop="89dp"
android:format="计时:%s"
android:textColor="#aaa"
android:textSize="30sp" />
<Button
android:id="@+id/main_btn_restart"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignTop="@+id/main_btn_start"
android:text="重新计时" />
<Button
android:id="@+id/main_btn_start"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/main_chronometer"
android:layout_marginTop="80dp"
android:text="开始计时" />
<Button
android:id="@+id/main_btn_stop"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/main_btn_restart"
android:layout_alignBottom="@+id/main_btn_restart"
android:layout_centerHorizontal="true"
android:text="停止计时" />
</RelativeLayout>
package com.xspacing.chronometer;
import android.app.Activity;
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 com.xspacing.chronometer.R;
/**
* @ClassName MainActivity.java
* @Description 计时器
* @author Smile
* @version v1.0
* @date 2016年9月20日 上午11:31:29
*/
public class MainActivity extends Activity implements OnClickListener {
private Button mBtn_start;
private Button mBtn_stop;
private Button mBtn_restart;
private Chronometer mChronometer;
private long mRecordTime; // 记录停止时间
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initViews();
initListener();
}
private void initViews() {
mBtn_start = (Button) findViewById(R.id.main_btn_start);
mBtn_stop = (Button) findViewById(R.id.main_btn_stop);
mBtn_restart = (Button) findViewById(R.id.main_btn_restart);
mChronometer = (Chronometer) findViewById(R.id.main_chronometer);
}
private void initListener() {
mBtn_start.setOnClickListener(this);
mBtn_stop.setOnClickListener(this);
mBtn_restart.setOnClickListener(this);
// 监听计时器
mChronometer.setOnChronometerTickListener(new OnChronometerTickListener() {
@Override
public void onChronometerTick(Chronometer chronometer) {
}
});
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.main_btn_start:
// SystemClock.elapsedRealtime()模拟器开启到现在的时间
mChronometer.setBase(SystemClock.elapsedRealtime() - mRecordTime); // 设置基准时间,开始计时的时间
mChronometer.start();
break;
case R.id.main_btn_stop:
mChronometer.stop();
mRecordTime = SystemClock.elapsedRealtime() - mChronometer.getBase();
break;
case R.id.main_btn_restart:
mChronometer.setBase(SystemClock.elapsedRealtime()); // 设置基准时间,开始计时的时间
break;
default:
break;
}
}
}