Here we will create a simple app which calculates the Body Mass Index of an individual using his weight and height.
Step 1: Create a new project with name ‘BMI Calculator’ and package name com.myexample.appcompat.bmi. Fill the forms and click “Finish” button.
Step 2: In app level build.gradle add following dependencies:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:27.0.2'
compile 'com.android.support:design:27.0.2'
compile 'com.android.support:support-v4:27.0.2'
}
Step 3: Open res -> layout -> xml (or) main.xml and add codes for displaying 3 EditText, and
2 Buttons.
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <ScrollView android:id="@+id/vscroll1" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:id="@+id/linear1" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#FFFFFF" android:orientation="vertical"> <LinearLayout android:id="@+id/linear2" android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="8dp" android:orientation="horizontal"> <TextView android:id="@+id/textview1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="8dp" android:text="Height :" android:textSize="18sp" android:textColor="#37474F" android:layout_weight="1.0"/> <EditText android:id="@+id/edittext1" android:layout_width="80dp" android:layout_height="wrap_content" android:padding="8dp" android:background="#B2DFDB" android:textSize="18sp" android:textColor="#000000" android:textColorHint="#607D8B" android:inputType="numberDecimal"/> <TextView android:id="@+id/textview2" android:layout_width="50dp" android:layout_height="wrap_content" android:padding="8dp" android:text="cm" android:textSize="18sp" android:textColor="#37474F"/> </LinearLayout> <LinearLayout android:id="@+id/linear3" android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="8dp" android:orientation="horizontal"> <TextView android:id="@+id/textview3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="8dp" android:text="Weight :" android:textSize="18sp" android:textColor="#37474F" android:layout_weight="1.0"/> <EditText android:id="@+id/edittext2" android:layout_width="80dp" android:layout_height="wrap_content" android:padding="8dp" android:background="#B2DFDB" android:textSize="18sp" android:textColor="#000000" android:textColorHint="#607D8B" android:inputType="numberDecimal"/> <TextView android:id="@+id/textview4" android:layout_width="50dp" android:layout_height="wrap_content" android:padding="8dp" android:text="kg" android:textSize="18sp" android:textColor="#37474F"/> </LinearLayout> <LinearLayout android:id="@+id/linear4" android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="8dp" android:orientation="horizontal"> <Button android:id="@+id/button1" android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="8dp" android:background="#00BFA5" android:text="Calculate" android:textSize="18sp" android:textStyle="bold" android:textColor="#000000"/> </LinearLayout> <LinearLayout android:id="@+id/linear5" android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="8dp" android:orientation="horizontal"> <TextView android:id="@+id/textview5" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="8dp" android:text="BMI :" android:textSize="18sp" android:textColor="#37474F" android:layout_weight="1.0"/> <EditText android:id="@+id/edittext3" android:layout_width="80dp" android:layout_height="wrap_content" android:padding="8dp" android:background="#B2DFDB" android:textSize="18sp" android:textColor="#000000" android:textColorHint="#607D8B"/> <TextView android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="kg/m²" android:textSize="18sp" android:textColor="#37474F" android:padding="8dp"/> </LinearLayout> <LinearLayout android:id="@+id/linear6" android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="8dp" android:orientation="horizontal"> <Button android:id="@+id/button3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="8dp" android:background="#00BFA5" android:text="Reset" android:textSize="18sp" android:textStyle="bold" android:textColor="#000000" android:layout_gravity="left" android:layout_weight="1.0"/> </LinearLayout> </LinearLayout> </ScrollView> </RelativeLayout>
Step 4: Open app -> java -> package and open MainActivity.java. Add following code in it.
package com.myexample.appcompat.sample;
import android.os.*;
import android.view.*;
import android.content.*;
import android.media.*;
import java.util.*;
import java.text.*;
import android.view.inputmethod.*;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import java.text.DecimalFormat;
import android.widget.*;
public class MainActivity extends AppCompatActivity {
private EditText edittext1;
private EditText edittext2;
private Button button1;
private EditText edittext3;
private Button button3;
// Declare three double variables height, weight and bmi.
private double height = 0;
private double weight = 0;
private double bmi = 0;
@Override
protected void onCreate(Bundle _savedInstanceState) {
super.onCreate(_savedInstanceState);
setContentView(R.layout.main);
initialize();
}
private void initialize() {
edittext1 = findViewById(R.id.edittext1);
edittext2 = findViewById(R.id.edittext2);
button1 = findViewById(R.id.button1);
edittext3 = findViewById(R.id.edittext3);
button3 = findViewById(R.id.button3);
// Disable edittext3 so that user cannot edit it.
edittext3.setEnabled(false);
// When Calculate Button is clicked
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View _v) {
// Hide the Keyboard
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
// If edittext1 and edittext2 are empty
if (!((edittext1.getText().toString().length() > 0) && (edittext2.getText().toString().length() > 0))) {
showMessage("Insufficient data. Please fill all the fields.");
edittext3.setText("");
} else {
// When there are values in edittext1 and edittext2
// Set height to text in edittext1
height = Double.parseDouble(edittext1.getText().toString());
// Set weight to text in edittext2
weight = Double.parseDouble(edittext2.getText().toString());
// Calculate BMI
bmi = weight / Math.pow(height / 100, 2);
// Display the BMI in edittext3
edittext3.setText(new DecimalFormat("0.00").format(bmi));
}
}
});
// When reset button is clicked
button3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View _v) {
edittext1.setText("");
edittext2.setText("");
edittext3.setText("");
}
});
}
// Define showMessage(String) as a shortcut for Toast
public void showMessage(String _s) {
Toast.makeText(getApplicationContext(), _s, Toast.LENGTH_SHORT).show();
}
}
Output:
Now run the app. If you enter the weight and height and click on the Calculate Button it will display the BMI.