计时器(Chronometer):计时器顾名思义就是计时用的。
1、代码
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<Chronometer <span style="white-space:pre"> </span>//设置计时器组件
android:id="@+id/chronomer"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="200px"/>
<RelativeLayout <span style="white-space:pre"> </span>//定义了一个内嵌的相对布局
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
<Button
android:id="@+id/time_start"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="开始计时"
/>
<Button
android:id="@+id/time_stop"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="停止计时"
android:layout_toRightOf="@+id/time_start"
/>
</RelativeLayout>
</LinearLayout>
MainActivity.java文件的内容。
package com.example.chronometer;
import android.app.Activity;
import android.app.Service;
import android.os.Bundle;
import android.os.SystemClock;
import android.os.Vibrator;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Chronometer;
import android.widget.Chronometer.OnChronometerTickListener;
public class MainActivity extends Activity {
private Chronometer C = null;
private Button butStart = null;
private Button butStop = null;
private Vibrator V = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.setContentView(R.layout.main);
//取得震动服务
this.V = (Vibrator)super.getApplication().getSystemService(Service.VIBRATOR_SERVICE);
this.butStart = (Button)super.findViewById(R.id.time_start);
this.butStop = (Button)super.findViewById(R.id.time_stop);
this.C = (Chronometer)super.findViewById(R.id.chronomer);
//设置时间显示格式
this.C.setFormat("当前显示时间:%s。");
//给计时器改变时设置监听器
this.C.setOnChronometerTickListener(new OnChronometerTickListenerImpl());
//给按钮设置单击监听器
this.butStart.setOnClickListener(new OnClickListenerImplStart());
this.butStop.setOnClickListener(new OnClickListenerImplStop());
}
private class OnClickListenerImplStart implements OnClickListener {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
MainActivity.this.C.start();//开始计时
}
}
private class OnClickListenerImplStop implements OnClickListener {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
MainActivity.this.C.stop();//停止计时
}
}
private class OnChronometerTickListenerImpl implements OnChronometerTickListener {
@Override
public void onChronometerTick(Chronometer chronometer) {
// TODO Auto-generated method stub
//获得当前的计时时间并把不是时间表示格式的数据去掉
String time = MainActivity.this.C.getText().toString()
.replaceAll("[^(\\d{2}:\\d{2})]", "");
if (("1:00").equals(time)) {
//不重复震动,第二个参数是0的话重复震动
MainActivity.this.V.vibrate(new long[]{100,100},-1);
}
}
}
}