Crear un cronometro de cuenta regresiva en Android Studio

📱 Crear un cronometro de cuenta regresiva en Android Studio [29]

En este tutorial vamos a Crear un cronometro de cuenta regresiva en Android Studio que cuente de un tiempo inicial a 0 y cuando llegue al final suene una alarma.

  • Insertamos un EditText, un Button y un TextView.
  • Al hacer click en el Button iniciara una cuenta regresiva que iniciara en los segundos puestos en el EditText y terminara en 0.
  • Cuando llegue a 0 sonará una alarma.

Sintaxis:
Cronómetro
object : CountDownTimer(tiempoAtras,tiempoIntervaluo)
override fun onFinish()
override fun onTick(tiempoIntervaluo)

Alarma
val notif= RingtoneManager.getDefaultUri(tipoNotificacion)
val r=RingtoneManager.getRingtone([email protected],notif)
r.play()

Crear un cronometro de cuenta regresiva en Android Studio

Codigo: https://github.com/programadornovato/Mi-Primer-Proyecto-Android-Studio/commit/8c1869b9e356410e06033a25ee3c74ba5a465727

package com.programadornovato.miprimerproyecto

import android.content.DialogInterface
import android.content.Intent
import android.graphics.Bitmap
import android.media.RingtoneManager
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.os.CountDownTimer
import android.view.View
import android.webkit.*
import android.widget.*
import androidx.appcompat.app.AlertDialog
import java.math.BigDecimal
import kotlin.math.PI
import kotlin.math.round

class MainActivity : AppCompatActivity() {
    private var txtTiempo:EditText?=null
    private var tvCuentaAtras:TextView?=null
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        txtTiempo=findViewById(R.id.txtTiempo)
        tvCuentaAtras=findViewById(R.id.tvCuentaAtras)
    }
    fun play(view: View){
        var tiempoSegundos=txtTiempo?.text.toString().toLong()
        var tiempoMilisegundos=tiempoSegundos*1000
        object : CountDownTimer(tiempoMilisegundos,1000){
            override fun onFinish() {
                val notificacion=RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE)
                val r=RingtoneManager.getRingtone([email protected],notificacion)
                r.play()
                this.cancel()
            }

            override fun onTick(millisUntilFinished: Long) {
                val tiempoSegundos=(millisUntilFinished/1000).toInt()+1
                tvCuentaAtras?.text=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/txtTiempo"
        android:layout_width="239dp"
        android:layout_height="75dp"
        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/txtTiempo" />
</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

Anterior tutorial Siguiente tutorial

Ads Blocker Image Powered by Code Help Pro

Ads Blocker Detected!!!

En Programador Novato vivimos de los anuncios, hemos detectado que está utilizando extensiones para bloquear anuncios. Ayudanos deshabilitando tu bloqueador de anuncios. :)