Calcula Edad - Android (Kotlin) App

Calcula Edad - Android (Kotlin) App

Calcula Edad es una pequeña herramienta desarrollada con Android-Kotlin, su función es la de calcular la edad exacta de una persona introduciendo su fecha de nacimiento, te puede ser de ayuda en trámites médicos o trámites legales.


Es una aplicación muy simple que utiliza un control llamado DatePicker para mostrar el calendario y una función para calcular la edad según una fecha seleccionada

Algoritmo

El algoritmo va dentro de la función getAge declarada en el archivo MainActivity.kt


INICIO
    Leer fechaNacimiento
    Declarar Edad = 0
    Edad = fechaActual.año - fechaNacimiento.año
    Si fechaActual.dia > fechaNacimiento.dia
        //Si el día actual es mayor al día de la fecha de nacimiento
        //significa que no ha cumplido años todavía en el año actual
        //Por lo tanto se le resta un valor a la Edad
        Edad --
    Fin_si
    Escribir "La Edad es " + Edad + " Años"
FIN

Descarga la App

YoLeo App disponible en Google Play

Vamos al código

Archivo MainActivity.kt


package com.example.calculaedad
import android.content.Intent
import android.icu.util.Calendar
import android.net.Uri
import android.os.Bundle
import android.widget.EditText
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity

class MainActivity : AppCompatActivity() {


    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        setContentView(R.layout.activity_main)
        var etDate = findViewById(R.id.etDate) as EditText
        etDate.setOnClickListener { showDatePickerDialog() }
        var link = findViewById(R.id.link) as TextView
        link.setOnClickListener{ openLink() }
    }

    private fun showDatePickerDialog() {
        val datePicker = DatePickerFragment { day, month, year -> onDateSelected(day, month, year) }
        datePicker.show(supportFragmentManager, "datePicker")
    }

    private fun onDateSelected(day: Int, month: Int, year: Int) {
        var etDate = findViewById(R.id.etDate) as EditText;
        etDate.setText("$day/$month/$year");
        getAge(year,month,day)
    }

    private fun getAge(year: Int, month: Int, day: Int) {
        val dob: Calendar = Calendar.getInstance()
        val today: Calendar = Calendar.getInstance()
        dob.set(year, month, day)
        var age: Int = today.get(Calendar.YEAR) - dob.get(Calendar.YEAR)
        if (today.get(Calendar.DAY_OF_YEAR) > dob.get(Calendar.DAY_OF_YEAR)) {
            age--
        }
        val ageInt = age

        var ageText = findViewById(R.id.age) as TextView;
        ageText.setText("Edad: " + ageInt.toString() + " Años");
    }

    private fun openLink(){
        val i = Intent(Intent.ACTION_VIEW, Uri.parse("https://www.vladi.codes"))
        startActivity(i)
    }
}

Archivo DatePickerFragment.kt


package com.example.calculaedad

import android.app.DatePickerDialog
import android.app.Dialog
import android.content.Context
import android.icu.util.Calendar
import android.os.Bundle
import android.widget.DatePicker
import androidx.fragment.app.DialogFragment

class DatePickerFragment(val listener: (day: Int, month: Int, year: Int) -> Unit) :
    DialogFragment(), DatePickerDialog.OnDateSetListener {
    override fun onDateSet(view: DatePicker, year: Int, month: Int, day: Int) {
        listener(day, month, year)
    }

    override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
        val c = Calendar.getInstance()
        val year = c.get(Calendar.YEAR)
        val month = c.get(Calendar.MONTH)
        val day = c.get(Calendar.DAY_OF_MONTH)
        val picker = DatePickerDialog(activity as Context, R.style.DatePickerTheme, this, year, month, day)
        picker.datePicker.maxDate = c.timeInMillis
        return picker
    }

}

Archivo activity_main.xml


<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    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"
    android:orientation="vertical"
    tools:context=".MainActivity" >

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_margin="24dp"
        android:text="Ingresa la Fecha de Nacimiento"
        android:textSize="24sp"
        android:textStyle="bold" />
    <EditText
        android:id="@+id/etDate"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="24dp"
        android:clickable="false"
        android:focusable="false"
        android:hint="Fecha de Nacimiento"/>

    <TextView
        android:id="@+id/age"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_margin="24dp"
        android:text="Edad"
        android:textSize="32sp"
        android:textStyle="bold" />

</LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_gravity="bottom"
    android:background="#2B4C8C"
    android:orientation="vertical">

    <TextView
        android:id="@+id/link"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_margin="8dp"
        android:text="Code in vladi.codes"
        android:textColor="#ffffff"
        android:textSize="20sp"
        android:textStyle="bold" />

</LinearLayout>

</RelativeLayout>

...
Github Vladimir Salguero

Visita el repositorio en GitHub





Support YoLeo App, Buy me a coffee!!

buymeacoffee