# How To Develop A Simple EMI Calculator Using Android Studio

Introduction

Android is one of the most popular operating systems for mobile. In this article, I will show you how to create a Simple EMI Calculator Android application using Android Studio.

Requirements

Steps to be followed

These steps are required to create a simple EMI Calculator Android application using Android Studio and I have included the source code below.

Step 1

Open Android Studio and Start a New Android Studio Project.

Step 2

You can choose your application name and choose where your project is stored on the location. If you wish to use C++ for coding the project, mark the "Include C++ support", and click "Next" button.

Now, select the version of Android and select the target Android devices.

Step 3

Now, add the activity and click "Next" button.

Add Activity name and click "Finish".

Formula

Here’s the formula to calculate EMI,

where,

• E is EMI
• P is Principal Loan Amount
• r is the rate of interest calculated on monthly basis.
• n is loan term/tenure / duration in number of months

Step 4

Go to activity_main.xml. This XML file contains the designing code for an Android app in the activity_main.xml,

The XML code given below.

1. <android.support.design.widget.CoordinatorLayout
2.     xmlns:android="http://schemas.android.com/apk/res/android"
3.     android:layout_width="match_parent"
4.     xmlns:tools="http://schemas.android.com/tools"
5.     xmlns:app="http://schemas.android.com/apk/res-auto"
6.     tools:context="abu.emicalculator.MainActivity"
7.     android:layout_height="match_parent">
8.     <android.support.v4.widget.NestedScrollView
9.         android:layout_width="match_parent"
10.         android:layout_height="match_parent"
11.         app:layout_behavior="@string/appbar_scrolling_view_behavior">
12.         <LinearLayout
13.             android:layout_width="fill_parent"
14.             android:layout_height="match_parent"
15.             android:layout_marginTop="?attr/actionBarSize"
16.             android:orientation="vertical"
20.
21.             <android.support.design.widget.TextInputLayout
22.                 android:id="@+id/input_layout_principal"
23.                 android:layout_width="match_parent"
24.                 android:layout_height="wrap_content">
25.
26.                 <EditText
27.                     android:id="@+id/principal"
28.                     android:layout_width="match_parent"
29.                     android:layout_height="wrap_content"
30.                     android:singleLine="true"
31.                     android:inputType="number"
32.                     android:digits="0123456789."
33.                     android:hint="@string/hint_principal" />
34.
35.             </android.support.design.widget.TextInputLayout>
36.
37.
38.             <android.support.design.widget.TextInputLayout
39.                 android:id="@+id/input_layout_interest"
40.                 android:layout_width="match_parent"
41.                 android:layout_height="wrap_content">
42.
43.                 <EditText
44.                     android:id="@+id/interest"
45.                     android:layout_width="match_parent"
46.                     android:layout_height="wrap_content"
47.                     android:singleLine="true"
48.                     android:inputType="number"
49.                     android:digits="0123456789."
50.                     android:hint="@string/hint_interest" />
51.
52.             </android.support.design.widget.TextInputLayout>
53.
54.             <android.support.design.widget.TextInputLayout
55.                 android:id="@+id/input_layout_tenure"
56.                 android:layout_width="match_parent"
57.                 android:layout_height="wrap_content">
58.
59.                 <EditText
60.                     android:id="@+id/years"
61.                     android:layout_width="match_parent"
62.                     android:layout_height="wrap_content"
63.                     android:inputType="number"
64.                     android:digits="0123456789."
65.                     android:hint="@string/hint_years" />
66.             </android.support.design.widget.TextInputLayout>
67.
68.
69.             <Button android:id="@+id/btn_calculate2"
70.                 android:layout_width="fill_parent"
71.                 android:layout_height="wrap_content"
72.                 android:text="Calculate"
73.                 android:background="@color/colorPrimary"
74.                 android:layout_marginTop="40dp"
75.                 android:textColor="@android:color/white"/>
76.
77.
78.             <android.support.design.widget.TextInputLayout
79.                 android:id="@+id/input_layout_emi"
80.                 android:layout_width="match_parent"
81.                 android:layout_height="wrap_content"
82.                 android:layout_marginTop="40dp">
83.
84.                 <EditText
85.                     android:id="@+id/emi"
86.                     android:layout_width="match_parent"
87.                     android:layout_height="wrap_content"
88.                     android:maxEms="0"
89.                     android:inputType="number"
90.                     android:hint="@string/hint_emi" />
91.             </android.support.design.widget.TextInputLayout>
92.
93.             <android.support.design.widget.TextInputLayout
94.                 android:id="@+id/input_layout_total_Interest"
95.                 android:layout_width="match_parent"
96.                 android:layout_height="wrap_content"
97.                 android:layout_marginTop="10dp">
98.
99.                 <EditText
100.                     android:id="@+id/interest_total"
101.                     android:layout_width="match_parent"
102.                     android:layout_height="wrap_content"
103.
104.                     android:inputType="number"
105.                     android:hint="@string/hint_interest_total" />
106.             </android.support.design.widget.TextInputLayout>
107.
108.         </LinearLayout>
109.     </android.support.v4.widget.NestedScrollView>
110.
111. </android.support.design.widget.CoordinatorLayout>

Step 5

compile 'com.android.support:appcompat-v7:23.4.0'
compile 'com.android.support:design:23.1.0'

Step 6

Go to (App ⇒ Res ⇒values⇒String.xml).

The string XML Code Given Below

1. <resources>
2.     <string name="app_name">EMI Calculator</string>
3.     <string name="hint_principal">Principal Amount ₹</string>
4.     <string name="hint_interest">Interest rate per Year %</string>
5.     <string name="hint_years">How Many Years</string>
6.     <string name="hint_emi">EMI ₹</string>
7.     <string name="hint_interest_total">Total Interest for Loan ₹</string>
8. </resources>

Step 7

Go to Main Activity.java. This Java program is the back-end language for Android. The Java code is given below.

1. package abu.emicalculator;
2.
3. import android.os.Bundle;
4. import android.support.v7.app.AppCompatActivity;
5. import android.text.TextUtils;
6. import android.view.View;
7. import android.widget.Button;
8. import android.widget.EditText;
9.
10.
11. public class MainActivity extends AppCompatActivity {
12.
13.     Button emiCalcBtn;
14.
15.     @Override
16.     protected void onCreate(Bundle savedInstanceState) {
17.         super.onCreate(savedInstanceState);
18.         setContentView(R.layout.activity_main);
19.
20.         final EditText P = (EditText)findViewById(R.id.principal);
21.         final EditText I = (EditText)findViewById(R.id.interest);
22.         final EditText Y = (EditText)findViewById(R.id.years);
23.         final EditText TI = (EditText)findViewById(R.id.interest_total);
24.
25.
26.
27.
28.         final EditText result = (EditText)findViewById(R.id.emi) ;
29.
30.
31.         emiCalcBtn = (Button) findViewById(R.id.btn_calculate2);
32.
33.         emiCalcBtn.setOnClickListener(new View.OnClickListener() {
34.             @Override
35.             public void onClick(View v) {
36.
37.                 String st1 = P.getText().toString();
38.                 String st2 = I.getText().toString();
39.                 String st3 = Y.getText().toString();
40.
41.                 if (TextUtils.isEmpty(st1)) {
42.                     P.setError("Enter Prncipal Amount");
43.                     P.requestFocus();
44.                     return;
45.                 }
46.
47.                 if (TextUtils.isEmpty(st2)) {
48.                     I.setError("Enter Interest Rate");
49.                     I.requestFocus();
50.                     return;
51.                 }
52.
53.                 if (TextUtils.isEmpty(st3)) {
54.                     Y.setError("Enter Years");
55.                     Y.requestFocus();
56.                     return;
57.                 }
58.
59.                 float p = Float.parseFloat(st1);
60.                 float i = Float.parseFloat(st2);
61.                 float y = Float.parseFloat(st3);
62.
63.                 float Principal = calPric(p);
64.
65.                 float Rate = calInt(i);
66.
67.                 float Months = calMonth(y);
68.
69.                 float Dvdnt = calDvdnt( Rate, Months);
70.
71.                 float FD = calFinalDvdnt (Principal, Rate, Dvdnt);
72.
73.                 float D = calDivider(Dvdnt);
74.
75.                 float emi = calEmi(FD, D);
76.
77.                 float TA = calTa (emi, Months);
78.
79.                 float ti = calTotalInt(TA, Principal);
80.
81.
82.
83.                 result.setText(String.valueOf(emi));
84.
85.
86.
87.
88.                 TI.setText(String.valueOf(ti));
89.
90.             }
91.         });
92.     }
93.
94.     public  float calPric(float p) {
95.
96.         return (float) (p);
97.
98.     }
99.
100.     public  float calInt(float i) {
101.
102.         return (float) (i/12/100);
103.
104.     }
105.
106.     public  float calMonth(float y) {
107.
108.         return (float) (y * 12);
109.
110.     }
111.
112.     public  float calDvdnt(float Rate, float Months) {
113.
114.         return (float) (Math.pow(1+Rate, Months));
115.
116.     }
117.
118.     public  float calFinalDvdnt(float Principal, float Rate, float Dvdnt) {
119.
120.         return (float) (Principal * Rate * Dvdnt);
121.
122.     }
123.
124.     public  float calDivider(float Dvdnt) {
125.
126.         return (float) (Dvdnt-1);
127.
128.     }
129.
130.     public  float calEmi(float FD, Float D) {
131.
132.         return (float) (FD/D);
133.
134.     }
135.
136.     public  float calTa(float emi, Float Months) {
137.
138.         return (float) (emi*Months);
139.
140.     }
141.
142.     public  float calTotalInt(float TA, float Principal) {
143.
144.         return (float) (TA - Principal);
145.
146.     }
147. }

Step 8

Now, either go to menu bar and click "Make project" or press ctrl+f9 to debug the error.

Step 9

Then, click Run button or press shift+f10 to run the project. Select the "virtual machine" option and click OK.

Conclusion

We have successfully created Simple EMI Calculator app for Android using Android Studio.