How to make the countdown 'HH: mm: ss' from the XMl android that I made, when within 24 hours there is no interaction then cannot do the transaction again or cannot be accessed again
This code is design UI for countdown timer.
Countdown Timer
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/constrainlayout"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="20dp"
android:layout_marginLeft="20dp"
android:layout_marginTop="18dp"
android:layout_marginEnd="20dp"
android:layout_marginRight="20dp"
android:background="@drawable/bg_color_orange"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/app_bar">
<TextView
android:id="@+id/textView_Title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="18dp"
android:text="Please make a payment Immediatelly"
android:textColor="@android:color/black"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/constrainlayout" />
<TextView
android:id="@+id/textView_TimeCountDown"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="18dp"
android:text="13 Hour: 59 Minute: 21 Second"
android:textColor="@android:color/black"
android:textSize="22sp"
app:layout_constraintEnd_toEndOf="@+id/textView_Title"
app:layout_constraintStart_toStartOf="@+id/textView_Title"
app:layout_constraintTop_toBottomOf="@+id/textView_Title" />
<TextView
android:id="@+id/textView_Day"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="18dp"
android:layout_marginBottom="18dp"
android:text="(Before Thursday, 16 January 2020, 13:33 WIB)"
android:textColor="@android:color/black"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="@+id/textView_Title"
app:layout_constraintStart_toStartOf="@+id/textView_Title"
app:layout_constraintTop_toBottomOf="@id/textView_TimeCountDown" />
</androidx.constraintlayout.widget.ConstraintLayout>
That code will get display like this
It's helpful for you
private void startTimer(int noOfMinutes) {
CountDownTimer countDownTimer = new CountDownTimer(noOfMinutes, 1000) {
public void onTick(long millisUntilFinished) {
long millis = millisUntilFinished;
//Convert milliseconds into hour,minute and seconds
String hms = String.format("%02d:%02d:%02d",
TimeUnit.MILLISECONDS.toHours(millis),
TimeUnit.MILLISECONDS.toMinutes(millis) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)), TimeUnit.MILLISECONDS.toSeconds(millis) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis)));
countdownTimerText.setText(hms);//set text
}
public void onFinish() {
countdownTimerText.setText("TIME'S UP!!"); //On finish change timer text
}
}.start();
Edited
//1584700200 is timestamp in milii seconds (Friday, March 20, 2020 10:30:00 AM)
//1000(1sec) is time interval to call onTick method
new CountDownTimer(1584700200, 1000){
@Override
public void onTick(long millisUntilFinished) {
long millis = millisUntilFinished;
String hms = String.format("%02d:%02d:%02d:%02d",
TimeUnit.HOURS.toDays(TimeUnit.MILLISECONDS.toHours(millis)),
(TimeUnit.MILLISECONDS.toHours(millis) -
TimeUnit.DAYS.toHours(TimeUnit.MILLISECONDS.toDays(millis))),
(TimeUnit.MILLISECONDS.toMinutes(millis) -
TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis))), (TimeUnit.MILLISECONDS.toSeconds(millis) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis))));
countdownTimerText.setText(hms);//set text
}
@Override
public void onFinish() {
/*clearing all fields and displaying countdown finished message */
countdownTimerText.setText("Count down completed");
}
}.start();
}
Kotlin
private fun countDown() {
val countDownTimer = object : CountDownTimer(1584700200, 1000) {
override fun onTick(p0: Long) {
val millis: Long = p0
val hms = String.format(
"%02d:%02d:%02d:%02d",
TimeUnit.HOURS.toDays(TimeUnit.MILLISECONDS.toDays(millis)),
(TimeUnit.MILLISECONDS.toHours(millis) - TimeUnit.DAYS.toHours(
TimeUnit.MILLISECONDS.toDays(
millis
)
)),
(TimeUnit.MILLISECONDS.toMinutes(millis) -
TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis))),
(TimeUnit.MILLISECONDS.toSeconds(millis) - TimeUnit.MINUTES.toSeconds(
TimeUnit.MILLISECONDS.toMinutes(millis)
))
)
System.out.println("Time : " + hms)
countdownTimerText.setText(hms);//set text
}
override fun onFinish() {
/*clearing all fields and displaying countdown finished message */
countdownTimerText.setText("Count down completed");
System.out.println("Time up")
}
}
countDownTimer.start()
}