随时随地阅读更多技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666)
DigitalClock和AnalogClock都会显示当前时间,不同的是,DigitalClock显示数字时钟,可以显示当前的秒数;AnalogClock显示模拟时钟,不会显示当前秒数。计时器Chronometer并不显示当前时间,它显示的是从某个起始时间开始,一共过去了多长时间。它提供了一个android:format属性,另外它支持以下用法:
1.setBase(long base):设置计时器的起始时间
2.setFormat(String format):设置显示时间的格式
3.start():开始计时
4.stop():停止计时
5.setOnChronometerTickListener(Chronometer.OnChronometerTickListener listener):为计时器绑定事件监听器,当计时器改变时触发该监听器。
下面通过一个实例来演示它们的使用:
Activity:
package com.lovo;
import android.app.Activity;
import android.os.Bundle;
import android.os.SystemClock;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.Button;
import android.widget.Chronometer;
import android.widget.Chronometer.OnChronometerTickListener;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// 设置窗口特征无标题
requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// 获得计时器组件
final Chronometer ch = (Chronometer) findViewById(R.id.Chronometer1);
// 获得开始计时按钮
Button start = (Button) findViewById(R.id.btn);
start.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// 设置开始计时时间
ch.setBase(SystemClock.elapsedRealtime());
// 启动计时器
ch.start();
}
});
ch.setOnChronometerTickListener(new OnChronometerTickListener() {
@Override
public void onChronometerTick(Chronometer chronometer) {
// 如果从开始计时到现在超过了30s
if (SystemClock.elapsedRealtime() - ch.getBase() > 30 * 1000)
ch.stop();
}
});
}
}
布局XMl:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_horizontal"
android:orientation="vertical" >
<!-- 定义模拟时钟 -->
<AnalogClock
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<!-- 定义数字时钟 -->
<DigitalClock
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#0f0"
android:textSize="15pt" />
<!-- 定义计时器 -->
<Chronometer
android:id="@+id/Chronometer1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<!-- 定义开始计时按钮 -->
<Button
android:id="@+id/btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="开始计时" />
</LinearLayout>
附上图片效果: