Criando um timer para relógio

Top  Previous  Next

Activity

 

package com.junior.crono;

 

import java.util.Timer;

import java.util.TimerTask;

import android.app.Activity;

import android.os.Bundle;

import android.view.View;

import android.widget.Button;

 

public class CronometroActivity extends Activity {

 

 private Button btIniciar;

 private Timer timer;

 private long startTime;

 

 @Override

 public void onCreate(Bundle savedInstanceState) {

 

         super.onCreate(savedInstanceState);        

         setContentView(R.layout.main);

         

         // associa widgets visuais com os ponteiros

         btIniciar = (Button) findViewById(R.id.btIniciar);

 

         // botão iniciar/parar

         btIniciar.setOnClickListener(new View.OnClickListener() {

                 public void onClick(View v) {

                         botaoIniciarParar();

                 }

         });

 }

 

 public void botaoIniciarParar() {

 

         // se o text do botão for "parar" trocar para iniciar e pára o timer

         if (btIniciar.getText().equals("Parar")) {

                 btIniciar.setText("Iniciar");

                 timer.cancel();

         } else {

                 ativarTimer();

         }

 }

 

 public void ativarTimer() {

 

         // troca o text do botão para "Parar"

         btIniciar.setText("Parar");

 

         // salva a tempo atual na variavel startTimer

         startTime = System.currentTimeMillis();

 

         // cria um timer

         timer = new Timer();

 

         // associa o timer com um task

         timer.schedule(new TimerTask() {

 

                 // durante o "run" ele chamará o método procedimentoTimer()

                 @Override

                 public void run() {

                         procedimentoTimer();

                 }

         }, 0, 500); // a cada 500 milisegundos e espera 0 segundos para começar

 

 }

 

 // a cada 500 miliseg ele chama o runOnUiThread

 public void procedimentoTimer() {

         this.runOnUiThread(Timer_Tick);

 }

 

 private Runnable Timer_Tick = new Runnable() {

         public void run() {

 

                 // verifica a diferença de agora - tempo de inicio

                 long millis = System.currentTimeMillis() - startTime;

 

                 // separa os segundos e minutos

                 int segundos = (int) (millis / 1000);

                 int minutos = segundos / 60;

                 segundos = segundos % 60;

 

                 // coloca no textView

                 String tempo = String.format("%d:%02d", minutos, segundos);

         }

 };

}

 

main.xml

 

Basta um botão chamado btIniciar