计时器的实现

package com.example.time;

import android.os.Bundle;
import android.os.Handler;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity {
        private TextView secText;
        private Button start;
        private int timeUsedInsec;  

/**********************************************************************************************/
    private Handler uiHandle = new Handler(){
        public void handleMessage(android.os.Message msg) {
            addTimeUsed();  //调取更新函数
            updateClockUI();  //调取叠加函数
            uiHandle.sendEmptyMessageDelayed(1, 1000);  //1s,1000ms
        }
    };
/***********************************************************************************************/

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        secText = (TextView) findViewById(R.id.sec);
        start = (Button) findViewById(R.id.start);
        start.setOnClickListener(new OnClickListener() {
           @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                uiHandle.removeMessages(1);
                startTime();
            }
        });
    }

/***************************************************秒的输出**************************************************/
    private void updateClockUI(){
            secText.setText(getSec());  //更新秒
        }
/***************************************************秒的叠加*************************************************/
    public void addTimeUsed(){
            timeUsedInsec = timeUsedInsec + 1; //叠加1
        }
/***************************************************循环调取实现不断更新***********************************************/
    private void startTime(){
        uiHandle.sendEmptyMessageDelayed(1, 1000); // 调取uiHandle
    }
/***************************************************定义什么才是一秒***********************************************/
    public CharSequence getSec(){
        int sec = timeUsedInsec % 60; // 求余数,叠加的数除以60,求余数
        return sec < 10? "0" + sec :String.valueOf(sec);  //如果秒小于10,秒前加“0”,如果秒不小于10,秒前面不加“0”
    }  

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
}
时间: 2024-08-14 21:10:06

计时器的实现的相关文章

计时器开始和关闭

<!DOCTYPE HTML><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>计时器</title></head><script type="text/javascript"> var num=0; var i; function

【效率】专为Win7系统设计的极简番茄计时器 - MiniPomodoro (附源码)

时光飞逝,一转眼坚持使用番茄工作法已经快3年了!能坚持这么长时间,主要还是得益于它的简单.但是令人纠结的是,这么长时间以来,换了7款不同的番茄计时器,仍然没有找到非常满意的: ■ 机械的噪音太大,会妨碍身边的同事,只能家里用.但是家里又太安静了,一旦响铃就跟晴天霹雳似的,把自己吓一跳. ■ 手机上的计时器 app 种类繁多,有偏重视觉效果的,有偏重任务管理的,有主打简单易用的,但是它们都有一个共同的缺点:不能保持屏幕常亮(太费电),时常会把它给忘了.另外怕影响同事一般都会把铃声关掉,只靠震动的话

iOS:三种常见计时器(NSTimer、CADisplayLink、dispatch_source_t)的使用

一.介绍 在iOS中,计时器是比较常用的,用于统计累加数据或者倒计时等,例如手机号获取验证码.计时器大概有那么三种,分别是:NSTimer.CADisplayLink.dispatch_source_t 二.使用 @property (strong,nonatomic)NSTimer *timer; @property (strong,nonatomic)CADisplayLink *displaylinkTimer; @property (strong,nonatomic)dispatch_s

让可等待的计时器添加APC调用

1 // TimerAPCRoutine.cpp : 定义控制台应用程序的入口点. 2 // 3 4 #include "stdafx.h" 5 #include <windows.h> 6 #include <iostream> 7 #include <time.h> 8 9 10 using namespace std; 11 12 13 void GetSystemTime(); 14 VOID CALLBACK TimerAPCRoutinu

Date应用计时器和倒计时

计时器应用 目的:通过date设置一个计时器,实现图一效果,点击按钮开始计时,小时数.分钟数.秒数分别放到不同的表格中显示,中间用冒号相隔. 思路:第一步布局,要有3个input标签用来放置小时数.分钟数.秒数:要设置i.j.k三个变量来放置这三个value值,要有一个button按钮用来触发点击事件,还要一个计时器setInterval(function(){},1000);用来计时. 注意事项:为放置点击多次按钮导致的同时触发多个计时器累加的事情,我们需要提前声明 var oTime=nul

分秒计时器

改一个效果,将纯秒的计时器更改为分秒的,出现了当59秒的时候,会出现1:59的样子. 利用下面的代码解决了问题 var sec=0; var t=null; var min=0; function timedCount(){sec=sec+1; t=window.setTimeout("timedCount()",1000); if(sec>59){min=0; min++; $('#').html(min); $('#').html(sec); } else{ $("

RDTSC指令实现微秒级计时器

//!微秒级别的计时器 //ExactTimer.h #pragma once #include <math.h> BOOL ReadDwordKey(IN HKEY hRootKey,IN LPCTSTR lpSubKey, IN LPCTSTR lpKey,OUT DWORD& dwValue){ HKEY hk; if (ERROR_SUCCESS!=RegOpenKey(hRootKey,lpSubKey,&hk)) return FALSE; DWORD dwType

ios开发之oc-NSTimer计时器简单使用

在游戏开发中,很多时候会用到一定时间内自动干嘛的效果,比如每隔一秒自动增加一个元素.很显然,我就用到了.object-c中的NSTimer就能实现这种效果. 1.定义NSTimer @property(nonatomic)NSTimer *MouseTimer;//计时器 -------------------------------------------------------------------------------------------------------------- 2.

JS详解Date应用+定时器原理+计时器案例

我们先说一下定时器吧: //定时器:设置一个定时器,再设置一个等待的时间,到达指定时间后,执行对应的操作//两种定时器:用法一样,区别一个执行后不会停下来,一个只执行一次//window.setInterval([function],[interval]);/*设置一个定时器,到达指定时间[interval] 执行我们的操作[function],然后定时器并没有停止,以后每隔这么长时间,都重新执行我们的function*/ //window.setTimeout([function],[inte

Android应用增加计时器

昨天写的Sudoku游戏需要增加计时器功能,使用Chronometer实现如下,由于Chronometer自己在调用stop之后后台的计时器还会继续增加,所以暂停功能需要额外实现: 在StartActivity onCreate方法中添加如下代码: textView = (TextView) findViewById(R.id.time_text); timer = (Chronometer) findViewById(R.id.chronometer); timer.setBase(Syste