how to create a countdown timer in android studio
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/primary"
tools:context=".MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="200dp"
android:gravity="center"
android:orientation="horizontal">
<TextView
android:id="@+id/hour"
android:layout_width="50dp"
android:layout_height="50dp"
android:background="@drawable/round_back_black10_10"
android:gravity="center"
android:text="00"
android:textColor="#FFFFFF"
android:textSize="30sp"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:layout_marginEnd="10dp"
android:text=":"
android:textColor="#FFFFFF"
android:textSize="30sp"
android:textStyle="bold" />
<TextView
android:id="@+id/min"
android:layout_width="50dp"
android:layout_height="50dp"
android:background="@drawable/round_back_black10_10"
android:gravity="center"
android:text="00"
android:textColor="#FFFFFF"
android:textSize="30sp"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:layout_marginEnd="10dp"
android:text=":"
android:textColor="#FFFFFF"
android:textSize="30sp"
android:textStyle="bold" />
<TextView
android:id="@+id/second"
android:layout_width="50dp"
android:layout_height="50dp"
android:background="@drawable/round_back_black10_10"
android:gravity="center"
android:text="00"
android:textColor="#FFFFFF"
android:textSize="30sp"
android:textStyle="bold" />
</LinearLayout>
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/startBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="100dp"
android:background="@color/secondary"
android:text="Start"
android:textAllCaps="false"
android:textColor="#FFFFFF" />
</RelativeLayout>
drawable/round_back_black10_10.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#1AFFFFFF"/>
<corners android:radius="10dp"/>
</shape>
MainActivity.java
import android.os.Bundle;
import android.os.CountDownTimer;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.AppCompatButton;
import java.util.Locale;
import java.util.concurrent.TimeUnit;
public class MainActivity extends AppCompatActivity {
// set end time in seconds
private int duration = 120;
private boolean timerRunning = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final TextView hour = findViewById(R.id.hour);
final TextView min = findViewById(R.id.min);
final TextView seconds = findViewById(R.id.second);
final AppCompatButton startBtn = findViewById(R.id.startBtn);
startBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// check if countdown timer is already running or not
if (!timerRunning) {
timerRunning = true;
new CountDownTimer(duration * 1000, 1000) {
@Override
public void onTick(long millisUntilFinished) {
runOnUiThread(new Runnable() {
@Override
public void run() {
// getting time format on HH:MM:SS
String time = String.format(Locale.getDefault(), "%02d:%02d:%02d", TimeUnit.MILLISECONDS.toHours(millisUntilFinished),
TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished) -
TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millisUntilFinished)),
TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished) -
TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished)));
final String[] hourMinSec = time.split(":");
hour.setText(hourMinSec[0]);
min.setText(hourMinSec[1]);
seconds.setText(hourMinSec[2]);
}
});
}
@Override
public void onFinish() {
// reset timer duration
duration = 120;
timerRunning = false;
}
}.start();
} else {
Toast.makeText(MainActivity.this, "Timer is already running", Toast.LENGTH_SHORT).show();
}
}
});
}
}
Output
Projects with Source Code + Video Tutorials
You can download our Java and Android Studio Projects with Source Code and Video Tutorials.
Settings and Profile page UI design in Android Studio with Example and Source Code
Login & Register Screen UI Design - 01
Login and Register Activity Material UI design in Android Studio
If you have any Questions or Queries
You can mail us at info.learnoset@gmail.com
Follow us to learn Coding and get in touch with new Technologies.