Program to display stop watch |Android Program|


Activity_main.xml


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   
xmlns:app="http://schemas.android.com/apk/res-auto"
   
xmlns:tools="http://schemas.android.com/tools"
    
android:layout_width="match_parent"
   
android:layout_height="match_parent"
   
tools:context=".MainActivity"
   
android:background="#000000"
   
android:orientation="vertical">

    <
TextView
       
android:id="@+id/timerValue"
       
android:layout_width="wrap_content"
       
android:layout_height="wrap_content"
       
android:text="Stop watch"
       
android:textSize="30sp"
       
android:layout_marginTop="60sp"
       
android:layout_gravity="center"
       
app:layout_constraintBottom_toTopOf="@+id/pauseButton"
       
app:layout_constraintEnd_toEndOf="parent"
       
app:layout_constraintHorizontal_bias="0.388"
       
app:layout_constraintStart_toStartOf="parent"
       
app:layout_constraintTop_toTopOf="parent"
       
app:layout_constraintVertical_bias="0.535"
       
android:textColor="#ffffff"/>

    <
Button
       
android:id="@+id/startButton"
       
android:layout_width="wrap_content"
       
android:layout_height="wrap_content"
       
android:layout_marginTop="50sp"
       
android:text="start"
       
android:layout_gravity="center"
       
app:layout_constraintBottom_toBottomOf="parent"
       
app:layout_constraintStart_toStartOf="parent"
       
app:layout_constraintTop_toTopOf="parent" />

    <
Button
       
android:id="@+id/pauseButton"
       
android:layout_width="wrap_content"
       
android:layout_height="wrap_content"
       
android:text="stop"
       
android:layout_gravity="center"
       
app:layout_constraintBottom_toBottomOf="parent"
       
app:layout_constraintEnd_toEndOf="parent"
       
app:layout_constraintHorizontal_bias="1.0"
       
app:layout_constraintStart_toEndOf="@+id/startButton"
       
app:layout_constraintTop_toTopOf="parent"
       
app:layout_constraintVertical_bias="0.512" />

    <
Button
       
android:id="@+id/resetButton"
       
android:layout_width="wrap_content"
       
android:layout_height="wrap_content"
       
android:layout_gravity="center"
       
android:text="reset"
       
app:layout_constraintBottom_toBottomOf="parent"
       
app:layout_constraintEnd_toEndOf="parent"
       
app:layout_constraintStart_toEndOf="@+id/pauseButton"
       
app:layout_constraintTop_toTopOf="parent" />
</
LinearLayout>


MainActivity.java

package com.example.stopwatch;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.os.Handler;
import android.os.SystemClock;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
     Button
startButton;
    Button
pauseButton;
    Button
resetButton;
     TextView
timerValue;
    
long startTime=0L;
     Handler
customHandler=new Handler();
   
long timeInMilliseconds=0L;
   
long timeSwapBuff=0L;
   
long updatedTime=0L;

   
@Override
   
protected void onCreate(Bundle savedInstanceState) {
       
super.onCreate(savedInstanceState);
        setContentView(R.layout.
activity_main);

       
timerValue=(TextView)findViewById(R.id.timerValue);

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

       
startButton.setOnClickListener(new View.OnClickListener() {
           
@Override
           
public void onClick(View view) {
               
startTime= SystemClock.uptimeMillis();
               
customHandler.postDelayed(updateTimerThread,0);
            }
        });
       
resetButton=findViewById(R.id.resetButton);
       
resetButton.setOnClickListener(new View.OnClickListener() {
           
@Override
           
public void onClick(View view) {

                
startTime=0L;
                
timeInMilliseconds=0L;
               
timeSwapBuff=0L;
                
updatedTime=0L;
               



               
timerValue.setText("00:00:00");
            }
        });
       
pauseButton=findViewById(R.id.pauseButton);
       
pauseButton.setOnClickListener(new View.OnClickListener() {
           
@Override
           
public void onClick(View view) {

               
timeSwapBuff+=timeInMilliseconds;
               
customHandler.removeCallbacks(updateTimerThread);
            }
        });

    }

   
private Runnable updateTimerThread=new Runnable() {
       
@Override
       
public void run() {

           
timeInMilliseconds=SystemClock.uptimeMillis()-startTime;

           
updatedTime=timeSwapBuff+timeInMilliseconds;

           
int secs=(int)(updatedTime/1000);
           
int mins=secs/60;
            secs=secs%
60;
           
int milliseconds=(int)(updatedTime%1000);
           
timerValue.setText(""+mins+":"+String.format("%02d",secs)+":"+String.format("%03d",milliseconds));
           
customHandler.postDelayed(this,0);
        }
    };
}

Design

Post a Comment

0 Comments