1. sylsau's Avatar
    Hello,

    I create that thread to present you a tutorial aiming to learn you how to create a Body Mass Index Calculator for Android. This tutorial is ideal for beginners that want to discover how to create a first application. You can discover the tutorial in video on Youtube :



    Create a Body Mass Index Calculator for Android

    The Body Mass Index (BMI) or Quetelet index is a value derived from the mass weight and height of an individual. The BMI is defined as the body mass divided by the square of the body height, and is universally expressed in units of kg/m². By analyzing the BMI value, we can determine a diagnostic. First step for the application is to define a layout letting users to enter weight and height values to calculate the BMI index. Besides, we will need a button to launch the BMI calculation and also a TextView to display the result.

    The layout will have the following form :

    Code:
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/activity_main"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        android:orientation="vertical"
        tools:context="com.ssaurel.bmicalculator.MainActivity">
    
        <TextView
            android:text="@string/weight"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:gravity="center_horizontal"
            android:layout_marginTop="50dp"
            android:textSize="20sp"/>
    
        <EditText
            android:id="@+id/weight"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:layout_marginTop="10dp"
            android:ems="6"
            android:inputType="number|numberDecimal"
            android:textSize="20sp"/>
    
        <TextView
            android:text="@string/height"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:gravity="center_horizontal"
            android:layout_marginTop="50dp"
            android:textSize="20sp"/>
    
        <EditText
            android:id="@+id/height"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:layout_marginTop="10dp"
            android:ems="6"
            android:inputType="number|numberDecimal"
            android:textSize="20sp"/>
    
        <Button
            android:id="@+id/calc"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:layout_marginTop="25dp"
            android:onClick="calculateBMI"
            android:text="@string/calculateBMI"
            />
    
        <TextView
            android:id="@+id/result"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:gravity="center_horizontal"
            android:layout_marginTop="25dp"
            android:textSize="20sp"/>
    
    </LinearLayout>
    Now, we can write the Java code in our Main Activity :

    Code:
     
    
    package com.ssaurel.bmicalculator;
    
    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.view.View;
    import android.widget.EditText;
    import android.widget.TextView;
    
    public class MainActivity extends AppCompatActivity {
    
        private EditText height;
        private EditText weight;
        private TextView result;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            height = (EditText) findViewById(R.id.height);
            weight = (EditText) findViewById(R.id.weight);
            result = (TextView) findViewById(R.id.result);
        }
    
        public void calculateBMI(View v) {
            String heightStr = height.getText().toString();
            String weightStr = weight.getText().toString();
    
            if (heightStr != null && !"".equals(heightStr)
                    && weightStr != null  &&  !"".equals(weightStr)) {
                float heightValue = Float.parseFloat(heightStr) / 100;
                float weightValue = Float.parseFloat(weightStr);
    
                float bmi = weightValue / (heightValue * heightValue);
    
                displayBMI(bmi);
            }
        }
    
        private void displayBMI(float bmi) {
            String bmiLabel = "";
    
            if (Float.compare(bmi, 15f) <= 0) {
                bmiLabel = getString(R.string.very_severely_underweight);
            } else if (Float.compare(bmi, 15f) > 0  &&  Float.compare(bmi, 16f) <= 0) {
                bmiLabel = getString(R.string.severely_underweight);
            } else if (Float.compare(bmi, 16f) > 0  &&  Float.compare(bmi, 18.5f) <= 0) {
                bmiLabel = getString(R.string.underweight);
            } else if (Float.compare(bmi, 18.5f) > 0  &&  Float.compare(bmi, 25f) <= 0) {
                bmiLabel = getString(R.string.normal);
            } else if (Float.compare(bmi, 25f) > 0  &&  Float.compare(bmi, 30f) <= 0) {
                bmiLabel = getString(R.string.overweight);
            } else if (Float.compare(bmi, 30f) > 0  &&  Float.compare(bmi, 35f) <= 0) {
                bmiLabel = getString(R.string.obese_class_i);
            } else if (Float.compare(bmi, 35f) > 0  &&  Float.compare(bmi, 40f) <= 0) {
                bmiLabel = getString(R.string.obese_class_ii);
            } else {
                bmiLabel = getString(R.string.obese_class_iii);
            }
    
            bmiLabel = bmi + "\n\n" + bmiLabel;
            result.setText(bmiLabel);
        }
    }
    When a user click on the calculate BMI button, the calculateBMI method is called. We get the values entered by the user for the weight and the height. The height is entered in centimeter. For the formula, we need to have a height in meter. So, we divide the value entered by 100. Then, we apply the formula to calculate the BMI :

    float bmi = weightValue / (heightValue * heightValue);

    With the BMI value, we can display the result on the user interface. We define the displayBMI method for that. To determine the diagnostic associated to the BMI value, we are going to use the following table :



    The last step is just to display the BMI value and the diagnostic in the result TextView. After that, you can try the application and enjoy the BMI Calculator in action :



    Don't hesitate to try this tutorial and give me your feedbacks.

    Thanks.

    Sylvain
    B. Diddy likes this.
    11-28-2016 02:34 AM
  2. B. Diddy's Avatar
    Thanks for the tutorial!
    11-28-2016 04:53 PM

Similar Threads

  1. Switching to Verizon with unlocked 6P?
    By mkchillin in forum Nexus 6P
    Replies: 12
    Last Post: 11-29-2016, 03:29 PM
  2. Replies: 0
    Last Post: 11-28-2016, 01:07 AM
  3. how can i delete apps on my android phone
    By AC Question in forum Ask a Question
    Replies: 3
    Last Post: 11-28-2016, 12:51 AM
  4. Replies: 0
    Last Post: 11-28-2016, 12:27 AM

Tags for this Thread

LINK TO POST COPIED TO CLIPBOARD