计时器--精确到10毫秒(精确度可以自行设定)

来源:互联网 发布:编程达人全套视频 编辑:程序博客网 时间:2024/05/01 23:03

    简单实现计时器功能,点击开始按钮开始计时,点击结束按钮计时结束。这只是一个例子,可以根据需要进行修改完善。  
    布局文件只是简单的TextView和两个Button,这里不再赘述。

package com.example;import java.util.Timer;import java.util.TimerTask;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.util.Log;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.TextView;public class MainActivity extends Activity {private int mlCount;private TextView tvTime;protected String time;private Timer timer = null;private TimerTask task = null;private Message msg = null;protected int sec;private Button btStart;private Button btStop;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);tvTime = (TextView) findViewById(R.id.tvTime);btStart = (Button)findViewById(R.id.btStart);btStop = (Button)findViewById(R.id.btStop);btStart.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stubstart();}});btStop.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stubstop();}});}/** * 计时器 */Handler handler = new Handler() {@Overridepublic void handleMessage(Message msg) {// TODO Auto-generated method stubswitch (msg.what) {case 1:mlCount++;int totalSec = 0;int yushu = 0;// 精确到0.01秒totalSec = (int) (mlCount / 100);yushu = (int) (mlCount % 100);// Set time displayint min = (totalSec / 60); sec = (totalSec % 60);try {// 格式化算出来的时间为String格式“00:00”time = String.format("%1$02d:%2$02d", sec, yushu);tvTime.setText(time);} catch (Exception e) {tvTime.setText("" + min + ":" + sec + ":" + yushu);e.printStackTrace();Log.e("MyTimer onCreate", "Format string error.");}break;default:break;}super.handleMessage(msg);}};/** * 计时器开始计时 */public void start() {if (null == timer) {if (null == task) {task = new TimerTask() {@Overridepublic void run() {// TODO Auto-generated method stubif (null == msg) {msg = new Message();} else {msg = Message.obtain();}msg.what = 1;handler.sendMessage(msg);}};}timer = new Timer(true);// timer.schedule(task, 100, 100); // set timer duration// set timer duration每隔0.01秒刷新一次timer.schedule(task, 10, 10);}}/** * 计时器停止 */public void stop() {task.cancel();task = null;timer.cancel(); // Cancel timertimer.purge();timer = null;handler.removeMessages(msg.what);}}
                                             
0 0
原创粉丝点击