Crear un cronometro de cuenta regresiva 2da parte en Android

馃摫 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.
Crear un cronometro de cuenta regresiva 2da parte en Android Studio

Codigo: https://github.com/programadornovato/Mi-Primer-Proyecto-Android-Studio/commit/0a8b69b36cfe7f0ecce58d8c4ee9574cf5cce9f6

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([email protected],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

Anterior 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. :)