Calculadora para IMC feita em Kotlin

Calculadora para IMC feita em Kotlin

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

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.

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

Ainda assim se estiver com alguma dúvida entre em nosso canal no telegram clicando no link abaixo.




Rodrigo Leutz
Desenvolvedor Web e Android ( Kotlin e Java )