Android之计时器(Chronometer)的用法
第一步:布局文件:
main.xml代码如下:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 <?xml version="1.0" encoding="utf-8"?> 2 3 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 4 5 android:layout_width="fill_parent" 6 7 android:layout_height="fill_parent" 8 9 android:orientation="vertical" > 10 11 12 13 14 <Chronometer 15 16 android:id="@+id/myChronometer" 17 18 android:layout_width="fill_parent" 19 20 android:layout_height="wrap_content" /> 21 22 23 24 25 <LinearLayout 26 27 android:layout_width="fill_parent" 28 29 android:layout_height="wrap_content" 30 31 android:orientation="horizontal" > 32 33 34 35 36 <Button 37 38 android:id="@+id/btn_start" 39 40 android:layout_width="wrap_content" 41 42 android:layout_height="wrap_content" 43 44 android:text="开始" /> 45 46 47 48 49 <Button 50 51 android:id="@+id/btn_stop" 52 53 android:layout_width="wrap_content" 54 55 android:layout_height="wrap_content" 56 57 android:text="停止" /> 58 59 60 61 62 <Button 63 64 android:id="@+id/btn_base" 65 66 android:layout_width="wrap_content" 67 68 android:layout_height="wrap_content" 69 70 android:text="复位" /> 71 72 73 74 75 <Button 76 77 android:id="@+id/btn_format" 78 79 android:layout_width="wrap_content" 80 81 android:layout_height="wrap_content" 82 83 android:text="格式化" /> 84 85 </LinearLayout> 86 87 88 89 90 </LinearLayout>
第二步:MainActivity
代码如下:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 package net.loonggg.chronometer; 2 3 4 5 6 import android.app.Activity; 7 8 import android.os.Bundle; 9 10 import android.os.SystemClock; 11 12 import android.os.Vibrator; 13 14 import android.view.View; 15 16 import android.widget.Button; 17 18 import android.widget.Chronometer; 19 20 import android.widget.Chronometer.OnChronometerTickListener; 21 22 23 24 25 public class MainActivity extends Activity { 26 27 private Vibrator vibrator; 28 29 private Chronometer chronometer; // 计时组件 30 31 private Button btn_start; 32 33 private Button btn_stop; 34 35 private Button btn_base; 36 37 private Button btn_format; 38 39 40 41 42 @Override 43 44 public void onCreate(Bundle savedInstanceState) { 45 46 super.onCreate(savedInstanceState); 47 48 setContentView(R.layout.main); 49 50 vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE);// 获取震动服务 51 52 chronometer = (Chronometer) findViewById(R.id.myChronometer); 53 54 chronometer 55 56 .setOnChronometerTickListener(new OnChronometerTickListenerImpl()); // 给计时组件设置舰艇对象 57 58 btn_start = (Button) findViewById(R.id.btn_start); 59 60 btn_stop = (Button) findViewById(R.id.btn_stop); 61 62 btn_base = (Button) findViewById(R.id.btn_base); 63 64 btn_format = (Button) findViewById(R.id.btn_format); 65 66 67 68 69 btn_start.setOnClickListener(new ButtonClickListener()); 70 71 btn_stop.setOnClickListener(new ButtonClickListener()); 72 73 btn_base.setOnClickListener(new ButtonClickListener()); 74 75 btn_format.setOnClickListener(new ButtonClickListener()); 76 77 } 78 79 80 81 82 public class OnChronometerTickListenerImpl implements // 计时监听事件,随时随地的监听时间的变化 83 84 OnChronometerTickListener { 85 86 87 88 89 @Override 90 91 public void onChronometerTick(Chronometer chronometer) { 92 93 String time = chronometer.getText().toString(); 94 95 if ("00:05".equals(time)) {// 判断五秒之后,让手机震动 96 97 vibrator.vibrate(new long[] { 1000, 10, 100, 10 }, 0);// 设置震动周期和是否循环震动,如果不想循环震动把0改为-1 98 99 } 100 101 } 102 103 } 104 105 106 107 108 public class ButtonClickListener implements View.OnClickListener { 109 110 111 112 113 @Override 114 115 public void onClick(View v) { 116 117 switch (v.getId()) { 118 119 case R.id.btn_start: 120 121 chronometer.start();// 开始计时 122 123 break; 124 125 case R.id.btn_stop: 126 127 chronometer.stop();// 停止计时 128 129 break; 130 131 case R.id.btn_base: 132 133 chronometer.setBase(SystemClock.elapsedRealtime());// 复位键 134 135 break; 136 137 case R.id.btn_format: 138 139 chronometer.setFormat("显示时间:%s.");// 更改时间显示格式 140 141 break; 142 143 144 145 146 default: 147 148 break; 149 150 } 151 152 } 153 154 155 156 157 } 158 159 }
第三步:注册权限:
<uses-permission android:name="android.permission.VIBRATE" />
非著名程序员可能是东半球最好的技术分享公众号。每天,每周定时推送一些有关移动开发的原创文章和教程,微信号:smart_android。