TimerView.java

package com.mytest.myclock;import java.util.Timer;import java.util.TimerTask;import android.app.AlertDialog;import android.content.Context;import android.os.Handler;import android.util.AttributeSet;import android.util.Log;import android.view.View;import android.widget.Button;import android.widget.LinearLayout;import android.widget.TextView;public class TimerView extends LinearLayout {    public TimerView(Context context) {        super(context);        // TODO Auto-generated constructor stub    }    public TimerView(Context context, AttributeSet attrs, int defStyle) {        super(context, attrs, defStyle);        // TODO Auto-generated constructor stub    }    public TimerView(Context context, AttributeSet attrs) {        super(context, attrs);        // TODO Auto-generated constructor stub    }    private TextView tvHour;    private TextView tvMinute;    private TextView tvSecond;    private Button btnStart;    private Button btnStop;    @Override    protected void onFinishInflate() {        // TODO Auto-generated method stub        super.onFinishInflate();        init();    }    private void init() {        tvHour = (TextView) this.findViewById(R.id.timer_hour);        tvMinute = (TextView) this.findViewById(R.id.timer_mini);        tvSecond = (TextView) this.findViewById(R.id.timer_second);        btnStart = (Button) this.findViewById(R.id.btn_start_timer);        btnStop = (Button) this.findViewById(R.id.btn_stop_timer);        btnStop.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                stopTimer();            }        });        btnStart.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                startTimer();            }        });    }    private final int WORK_STATE_STOP = 0; // 计时状态,停止    private final int WORK_STATE_RUN = 1;// 计时状态    private int userInputTime = 0;    private Timer timer;    private TimerTask task;    private Handler handler = new Handler() {        public void handleMessage(android.os.Message msg) {            switch(msg.what){            case WORK_STATE_RUN:                int hour =  userInputTime/60/60;                int minute = (userInputTime/60)%60;                int second = userInputTime%60;                tvHour.setText(""+hour);                tvMinute.setText(""+minute);                tvSecond.setText(""+second);                break;            case WORK_STATE_STOP:                new AlertDialog.Builder(getContext()).setTitle("时间到").setNegativeButton("取消", null).show();                stopTimer();                break;            }        };    };    private void startTimer() {        try {            userInputTime = (Integer.parseInt(tvHour.getText().toString()) * 60 * 60                    + Integer.parseInt(tvMinute.getText().toString()) * 60                    + Integer.parseInt(tvSecond.getText().toString()));        } catch (Exception e) {            Log.e("info", "TimerView->startTimer"+ e.getMessage());            return;        }                        timer = new Timer();        task = new TimerTask() {                        @Override            public void run() {                                userInputTime--;                handler.sendEmptyMessage(WORK_STATE_RUN);                if(userInputTime <=0){                    handler.sendEmptyMessage(WORK_STATE_STOP);                    stopTimer();                }                            }        };        timer.schedule(task, 1000,1000); //延迟一秒,再每隔一秒执行一次timertask.run()    }    private void stopTimer() {        if(task!=null){            task.cancel();            task = null;        }    }}
View Code

小结:

1、采用timer和timertask去刷新时间;

2、获取小时数应该采用hour = userInputTime/60/60,而不能直接hour = userInputTime/360.

更多相关文章

  1. Android(安卓)采用Pull解析XML内容 【学习记录】
  2. android 打开wifi
  3. 分享方法:android 获得屏幕状态
  4. android GPS定位和卫星个数(源码)
  5. Android之drawable state各个属性详解
  6. Android下修改SeekBar样式
  7. Android(安卓)监听手机GPS打开状态实现代码
  8. android 登录前检查网络状态
  9. android朋友圈监听键盘状态 点击空白区域隐藏键盘

随机推荐

  1. android集成EasyPlayer播放器播放实时流
  2. 深入理解Android(5)——从MediaScanner分析
  3. Android(安卓)Git 常用命令和规范
  4. Android中使用WebView建立应用程序
  5. Android(安卓)shape的使用详解
  6. Android: 获取android market的登陆ID
  7. AndroidManifest.xml文件详解(三)
  8. Android(安卓)DeepLink介绍与使用
  9. Android消息处理机制——Looper、Handler
  10. Android(安卓)NDK 中使用C++源文件和使用