馃摫 [Curso] Android Studio con Interfaz Grafica de 0 a 100

馃摫 Crear un cronometro de cuenta regresiva 2da parte en Android Studio [30]

En este tutorial vamos a terminar 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.

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(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

#kotlin #java #AndroidStudio

Eugenio Chaparro

Entradas recientes

Enviar mensajes de Whatsapp automaticamente [Twilio tutorial en Espa帽ol 2022]

Enviar mensajes de Whatsapp automaticamente [Twilio tutorial en Espa帽ol 2022]

Twilio es una p谩gina web que nos permite enviar mensajes de texto v铆a Whatsapp. El…

3 semanas hace
馃摫 Crear un cronometro de cuenta regresiva en Android Studio [29]

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

En este tutorial vamos a crear un cronometro que cuent de un tiempo inicial a…

4 semanas hace
馃摫 Colocar un progressbar WebView en Android Studio [28]

馃摫 Colocar un progressbar WebView en Android Studio [28]

En este tutorial vamos colocar un progressbar (Barra de progreso) a nuestro WebView para ver…

4 semanas hace
馃摫 Detectar error al cargar WebView en Android Studio [27]

馃摫 Detectar error al cargar WebView en Android Studio [27]

En este tutorial vamos a detectar si nuestra p谩gina web cargo exitosamente o tuvo alg煤n…

4 semanas hace
馃摫 Cargar una pagina web con WebView en Android Studio [26]

馃摫 Cargar una pagina web con WebView en Android Studio [26]

En este tutorial vamos a cargar una p谩gina web dentro de nuestro activity con la…

4 semanas hace
馃摫 Enviar datos entre Activity en Android Studio [25]

馃摫 Enviar datos entre Activity en Android Studio [25]

En este tutorial vamos a aprender a enviar datos entre activitys. En primer lugar vamos…

4 semanas hace