Calculadora para IMC feita em Kotlin

Calculadora para IMC feita em Kotlin

14/11/2019





Nesse tutorial vou descrever uma Calculadora para IMC feita em Kotlin assim você vai poder checar como você está de acordo com seu peso e altura.

Vamos então entender como chegamos no cálculo do IMC.

IMC = p / a²

Que é peso em kg dividido por altura em metros ao quadrado.

Primeiramente vamos criar um projeto vazio(Empty) e fazer as mudanças para o nosso projeto.

Se você não souber como criar um projeto vazio então veja o tutorial Como criar um projeto no Android Studio.

Logo depois de ter criado o projeto vamos inserir a biblioteca do material design.

Se você não sabe como fazer isso então veja o tutorial Como usar o material design em kotlin.

Então chegou a hora de começar a fazer as mudanças no nosso projeto vamos assim modificar o arquivo activity_main e deixar como o seguinte.

activity_main

<?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"
    android:layout_margin="20dp">
    <TextView
        android:id="@+id/tvTitle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Cálculo do IMC"
        android:textSize="30sp"
        android:textColor="#000"
        android:layout_marginTop="30dp"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
    <com.google.android.material.textfield.TextInputLayout
        android:id="@+id/layEtPeso"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Digite o peso em Kg:"
        android:layout_marginTop="30dp"
        app:layout_constraintTop_toBottomOf="@id/tvTitle" >
        <com.google.android.material.textfield.TextInputEditText
            android:id="@+id/etPeso"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:inputType="numberDecimal"/>
    </com.google.android.material.textfield.TextInputLayout>
    <com.google.android.material.textfield.TextInputLayout
        android:id="@+id/layEtAltura"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Digite a altura em metros:"
        app:layout_constraintTop_toBottomOf="@id/layEtPeso" >
        <com.google.android.material.textfield.TextInputEditText
            android:id="@+id/etAltura"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:inputType="numberDecimal"/>
    </com.google.android.material.textfield.TextInputLayout>
    <Button
        android:id="@+id/btnCalc"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Calcular"
        app:layout_constraintTop_toBottomOf="@+id/layEtAltura"/>
    <TextView
        android:id="@+id/tvResp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:textSize="20sp"
        app:layout_constraintTop_toBottomOf="@+id/btnCalc"
        app:layout_constraintBottom_toBottomOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>

Logo após modificar o activity_main vamos fazer a programação em kotlin no arquivo MainActivity deixando assim como o seguinte.

MainActivity

package br.com.uware.imc

import android.content.Context
import android.icu.text.DecimalFormat
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import android.view.inputmethod.InputMethodManager
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        btnCalc.setOnClickListener {
            if(etPeso.text.toString() != "" && etAltura.text.toString() != "" ) {
                val imc =
                    etPeso.text.toString().toDouble() / (etAltura.text.toString().toDouble() * etAltura.text.toString().toDouble())
                val df = DecimalFormat("#.00")
                val imcResp = "IMC: " + df.format(imc) + "\n" + checkIMC(imc)
                tvResp.text = imcResp
            }
            else{
                tvResp.text = "Valores nulos."
            }
            it.hideKeyboard()
        }
    }
    private fun checkIMC(bd: Double): String{
        when(bd){
            in 0..17 -> return "Muito abaixo do peso."
            in 17.0..18.49 -> return "Abaixo do peso."
            in 18.5..24.99 -> return "Peso normal."
            in 25.0..29.99 ->  return "Acima do peso."
            in 30.0..34.99 -> return "Obesidade I."
            in 35.0..39.99 -> return "Obesidade II(severa)."
            else -> return "Obesidade III(mórbida)."
        }
    }
    fun View.hideKeyboard() {
        val imm = context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
        imm.hideSoftInputFromWindow(windowToken, 0)
    }
}

Agora vamos compilar e executar nosso projeto para então clacular o nosso IMC.

Enfim espero poder ter ajudado com mais esse tutorial sobre Calculadora para IMC feita em Kotlin.

Visite e siga nosso canal no YouTube para ajudar no crescimento do site.

Fonte: http://www.calculoimc.com.br/tabela-de-imc/





Tags: , , ,

Autor Rodrigo Leutz
Rodrigo Leutz

Desenvolvedor Web e Android ( Kotlin e Java )