计时器的实现

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;
    }
}
原文地址:https://www.cnblogs.com/hellowzd/p/4229005.html