![📱 Crear un cronometro de cuenta regresiva 2da parte en Android Studio [30] 1 Crear un cronometro de cuenta regresiva 2da parte en Android](https://www.programadornovato.com/wp-content/uploads/2021/12/30-535x251.png)
📱 Crear un cronometro de cuenta regresiva 2da parte en Android Studio [30]
En este tutorial vamos a terminar el tutorial Crear un cronometro de cuenta regresiva 2da parte en Android Studio de hacer nuestro cronómetro y le agregaremos horas minutos y segundos.
- Agregaremos dos EditText más que contendrán la hora y los minutos mientras que el EditText que que ya estaba contendrá los segundos.
- Sumaremos los segundos de las horas más los segundos de los minutos y los segundos y los colocaremos como tiempo de la cuenta regresiva.
- En el ViewText que muestra el tiempo que resta le pasaremos las horas minutos y segundos calculados a partir de los segundos.
package com.programadornovato.miprimerproyecto
import android.media.RingtoneManager
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.os.CountDownTimer
import android.view.View
import android.widget.*
class MainActivity : AppCompatActivity() {
private var txtSegundos:EditText?=null
private var txtMinutos:EditText?=null
private var txtHoras:EditText?=null
private var tvCuentaAtras:TextView?=null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
txtSegundos=findViewById(R.id.txtSegundos)
txtMinutos=findViewById(R.id.txtMinutos)
txtHoras=findViewById(R.id.txtHoras)
tvCuentaAtras=findViewById(R.id.tvCuentaAtras)
}
fun play(view: View){
val seg=txtSegundos?.text.toString().toLong()*1000
val min=txtMinutos?.text.toString().toLong()*60*1000
val hor=txtHoras?.text.toString().toLong()*60*60*1000
var tiempoMilisegundos=seg+min+hor
object : CountDownTimer(tiempoMilisegundos,1000){
override fun onFinish() {
val notificacion=RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE)
val r=RingtoneManager.getRingtone(this@MainActivity,notificacion)
r.play()
this.cancel()
}
override fun onTick(millisUntilFinished: Long) {
var tiempoSegundos=(millisUntilFinished/1000).toInt()+1
val horas=tiempoSegundos/3600
tiempoSegundos=tiempoSegundos%3600
val min=tiempoSegundos/60
tiempoSegundos=tiempoSegundos%60
tvCuentaAtras?.text=horas.toString().padStart(2,'0')+":"+min.toString().padStart(2,'0')+":"+tiempoSegundos.toString().padStart(2,'0')
}
}.start()
}
}
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="CRONOMETRO"
android:textSize="36sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<EditText
android:id="@+id/txtSegundos"
android:layout_width="77dp"
android:layout_height="64dp"
android:layout_marginStart="16dp"
android:layout_marginLeft="16dp"
android:layout_marginTop="56dp"
android:ems="10"
android:inputType="number"
android:text="00"
android:textSize="24sp"
app:layout_constraintStart_toEndOf="@+id/txtMinutos"
app:layout_constraintTop_toBottomOf="@+id/textView" />
<EditText
android:id="@+id/txtMinutos"
android:layout_width="77dp"
android:layout_height="64dp"
android:layout_marginStart="16dp"
android:layout_marginLeft="16dp"
android:layout_marginTop="56dp"
android:ems="10"
android:inputType="number"
android:text="00"
android:textSize="24sp"
app:layout_constraintStart_toEndOf="@+id/txtHoras"
app:layout_constraintTop_toBottomOf="@+id/textView" />
<EditText
android:id="@+id/txtHoras"
android:layout_width="77dp"
android:layout_height="64dp"
android:layout_marginStart="16dp"
android:layout_marginLeft="16dp"
android:layout_marginTop="56dp"
android:ems="10"
android:inputType="number"
android:text="00"
android:textSize="24sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView" />
<ImageButton
android:id="@+id/btnPlay"
android:layout_width="84dp"
android:layout_height="75dp"
android:layout_marginTop="56dp"
android:layout_marginEnd="16dp"
android:layout_marginRight="16dp"
android:onClick="play"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView"
app:srcCompat="@android:drawable/ic_media_play" />
<TextView
android:id="@+id/tvCuentaAtras"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="84dp"
android:text="00"
android:textSize="76sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/txtSegundos" />
</androidx.constraintlayout.widget.ConstraintLayout>
🎦 Lista de reproducción de este curso: https://www.youtube.com/watch?v=3ZUlE_tvfaM&list=PLCTD_CpMeEKRL2-HaZThebGcyyR3_RshO&ab_channel=programadornovato
🎦 Curso de Android Studio: https://www.youtube.com/watch?v=AHyTqIB_8Rs&list=PLCTD_CpMeEKTT9pb9J-89j1SPtqHzU7sF&ab_channel=programadornovato
🎦 [Curso] Java Netbeans Completo☕: https://www.youtube.com/playlist?list=PLCTD_CpMeEKTT-qEHGqZH3fkBgXH4GOTF
🎦 [Curso] Kotlin de 0 a 100: https://www.youtube.com/playlist?list=PLCTD_CpMeEKSjzbsW_zmVNz23GyOVsdbS
🎦 [Curso] Java Netbeans Completo☕: https://www.youtube.com/playlist?list=PLCTD_CpMeEKTT-qEHGqZH3fkBgXH4GOTF
🔗 Facebook: https://facebook.com/ProgramadorNovatoOficial
🔗 Twitter: https://twitter.com/programadornova
🔗 Linkedin: https://www.linkedin.com/in/programadornovato/
🔗 Instagram: https://www.instagram.com/programadornovato/
🔗 Pagina oficial: https://www.programadornovato.com
🔗 Gracias por apoyar este canal: https://www.patreon.com/programadornovato
Ave que vuela, a la cazuela.