控件:Chronometer --- 计时器(定时震动)

 

   现在可以发现计时器组件是TextView的子类,所以其主要功能肯定还是显示文本操作。

 

main.xml

View Code
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation
="vertical"
android:layout_width
="fill_parent"
android:layout_height
="fill_parent">
<Chronometer
android:id="@+id/myChronometer"
android:layout_width
="wrap_content"
android:layout_height
="wrap_content"/>
<LinearLayout
android:orientation="horizontal"
android:layout_width
="fill_parent"
android:layout_height
="fill_parent">
<Button
android:id="@+id/butStart"
android:text
="开始计时"
android:layout_width
="wrap_content"
android:layout_height
="wrap_content"/>
<Button
android:id="@+id/butStop"
android:text
="停止计时"
android:layout_width
="wrap_content"
android:layout_height
="wrap_content"/>
</LinearLayout>
</LinearLayout>

 

 

MyChronometerDemo.java

View Code
package org.lxh.demo;

import android.app.Activity;
import android.app.Service;
import android.os.Bundle;
import android.os.SystemClock;
import android.os.Vibrator;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Chronometer;
import android.widget.Chronometer.OnChronometerTickListener;

public class MyChronometerDemo extends Activity {
private Chronometer myChronometer = null; // 计时组件
private Button butStart = null; // 按钮组件
private Button butStop = null; // 按钮组件
private Vibrator vibrator = null ; // 设置震动

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 调用默认布局管理器
super.setContentView(R.layout.main);
// 取得组件
this.myChronometer = (Chronometer) super.findViewById(R.id.myChronometer);
// 取得震动服务
this.vibrator = (Vibrator) super.getApplication().getSystemService(Service.VIBRATOR_SERVICE);
// 取得组件
this.butStart = (Button) super.findViewById(R.id.butStart);
this.butStop = (Button) super.findViewById(R.id.butStop);
// 设置监听
this.butStart.setOnClickListener(new OnClickListenerImplStart()) ;
this.butStop.setOnClickListener(new OnClickListenerImplStop()) ;
// 格式化文本
this.myChronometer.setFormat("当前计时时间:%s。");
// 设置监听
this.myChronometer.setOnChronometerTickListener(
new OnChronometerTickListenerImpl());
}
private class OnChronometerTickListenerImpl implements OnChronometerTickListener {
@Override
public void onChronometerTick(Chronometer chronometer) {
// 取出时间
String time = chronometer.getText().toString()
.replaceAll("[^(\\d{2}:\\d{2})]", "");
if ("01:00".equals(time)) { // 满一分钟
// 设置震动周期,以及循环震动
MyChronometerDemo.this.vibrator.vibrate(new long[] { 1000, 10,
1000, 100 }, 0);
}
}
}
private class OnClickListenerImplStart implements OnClickListener {

@Override
public void onClick(View view) {
// 开始计时
MyChronometerDemo.this.myChronometer.start() ;
}
}
private class OnClickListenerImplStop implements OnClickListener {

@Override
public void onClick(View view) {
// 结束计时
MyChronometerDemo.this.myChronometer.stop() ;
// 复位
MyChronometerDemo.this.myChronometer.setBase(SystemClock.elapsedRealtime());
// 取消震动
MyChronometerDemo.this.vibrator.cancel() ;
}
}
}

 

 

AndroidManifest.xml

View Code
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package
="org.lxh.demo"
android:versionCode
="1"
android:versionName
="1.0">
<uses-sdk android:minSdkVersion="10" />

<application
android:icon="@drawable/icon"
android:label
="@string/app_name">
<activity
android:name=".MyChronometerDemo"
android:label
="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
    <!-- 震动权限 -->
<uses-permission
android:name="android.permission.VIBRATE" />
</manifest>

 

posted on 2012-03-24 19:28  大米稀饭  阅读(640)  评论(0编辑  收藏  举报