Android 简单的计时器可以使用系统提供的方法Chronometer
下面是是实现的效果
Chronometer 的几个方法如下:
1 start(); 计时开始
2 stop(); 计时暂停
3 setBase 设置计时时间
4 setFormat 设置时间格式
5 setOnChronometerTickListener 计时监听
下面写一个demo
在xml 中布局:
<?xml version="1.0" encoding="utf-8"?>
<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="vertical"
tools:context=".MainActivity">
<Button
android:id="@+id/btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="计时开始" />
<Button
android:id="@+id/btn1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="计时暂停" />
<Button
android:id="@+id/btn2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="恢复计时" />
<Button
android:id="@+id/btn3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="重置计时" />
<Chronometer
android:id="@+id/chronometer"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:textColor="#FF0000"
android:textSize="25sp" />
</LinearLayout>
java 代码
public class MainActivity extends AppCompatActivity {
private Chronometer chronometer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
chronometer = findViewById(R.id.chronometer);
findViewById(R.id.btn).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//设置计时时间为当前时间,(方便监听计时从什么时候开发)
chronometer.setBase(SystemClock.elapsedRealtime());
//设置显示格式
// chronometer.setFormat("%s");
// 更改时间显示格式,默认xml 写的是00:00 ,在计时前面添加文字
chronometer.setFormat("计时时间:%s");
//启动计时器
chronometer.start();
}
});
findViewById(R.id.btn1).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//启动计时器
chronometer.stop();
}
});
findViewById(R.id.btn2).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//启动计时器
chronometer.start();
}
});
findViewById(R.id.btn3).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//启动计时器
chronometer.setText("00:00");
chronometer.setBase(SystemClock.elapsedRealtime());
}
});
//设置计时器该改变监听事件
chronometer.setOnChronometerTickListener(new Chronometer
.OnChronometerTickListener() {
@Override
public void onChronometerTick(Chronometer chronometer) {
//如果当前时间 - 计时器的起始时间 >= 30秒
if (SystemClock.elapsedRealtime() - chronometer.getBase() >= 30 * 1000) {
//停止计时器
chronometer.stop();
}
}
});
}
}
这样就实现上面的效果