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