Today, we will learn how to implement a simple calculator app in Android Studio. In this article, we will learn about the complete development of the project.
Build a simple calculator app that can perform basic arithmetic operations based on user input, such as addition, subtraction, multiplication, or division. We have attached a sample video to help you understand what we have done in this article.
We will implement this project in Kotlin language with data binding.
Implementation of calculator app:
- Open Android Studio.
- Start a New Android Studio Project by clicking the button File/New/New Project -> Empty Activity and Next.
- After clicking the next button gives your application the name Calculator App and leave the other fields blank.
- Select the Minimum SDK as per your requirement and click finish.
Preview: Simple Calculator Application
<– Simple Calculator Application
File: themes.xml
- Add the code given below in your themes.xml file.
<resources> <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> </style> <style name="ActionButtonStyle"> <item name="android:layout_width">0dp</item> <item name="android:layout_height">match_parent</item> <item name="android:layout_weight">1</item> <item name="android:background">@color/actionButton</item> <item name = "android:textSize">21sp</item> <item name="android:textColor">@android:color/white</item> <item name="android:gravity">center</item> <item name="android:layout_margin">0.5dp</item> </style> <style name="NumberButtonStyle"> <item name="android:layout_width">0dp</item> <item name="android:layout_height">match_parent</item> <item name="android:layout_weight">1</item> <item name="android:background">@color/numberActionButton</item> <item name = "android:textSize">21sp</item> <item name="android:textColor">@android:color/white</item> <item name="android:gravity">center</item> <item name="android:layout_margin">0.5dp</item> </style> <style name="EqualButtonStyle"> <item name="android:layout_width">0dp</item> <item name="android:layout_height">match_parent</item> <item name="android:layout_weight">1</item> <item name="android:background">@color/equalButton</item> <item name = "android:textSize">21sp</item> <item name="android:textColor">@android:color/white</item> <item name="android:gravity">center</item> <item name="android:layout_margin">0.5dp</item> </style> <style name="NumberActionButton2"> <item name="android:layout_width">0dp</item> <item name="android:layout_height">match_parent</item> <item name="android:layout_weight">1</item> <item name="android:background">@color/numberActionButton2</item> <item name ="android:textSize">21sp</item> <item name="android:textColor">@android:color/white</item> <item name="android:gravity">center</item> <item name="android:layout_margin">0.5dp</item> </style> </resources>
File: color.xml
- Add the code given below in your color.xml file.
<?xml version="1.0" encoding="utf-8"?> <resources> <color name="purple_200">#FFBB86FC</color> <color name="purple_500">#FF6200EE</color> <color name="purple_700">#FF3700B3</color> <color name="teal_200">#FF03DAC5</color> <color name="teal_700">#FF018786</color> <color name="black">#FF000000</color> /////colors <color name="colorPrimary">#000000</color> <color name = "white">#ffffff</color> <color name="colorPrimaryDark">#cccccc</color> <color name="colorAccent">#FF4081</color> <color name = "actionButton">#808080</color> <color name = "equalButton">#FF0000</color> <color name="numberActionButton">#000000</color> <color name = "numberActionButton2">#373737</color> </resources>
File: MainActivity.kt
- Add the Kotlin code given below in your file MainActivity.kt
package com.sagar.calculator import android.os.Bundle import androidx.appcompat.app.AppCompatActivity import androidx.databinding.DataBindingUtil import com.sagar.calculator.databinding.ActivityMainBinding import net.objecthunter.exp4j.ExpressionBuilder class MainActivity : AppCompatActivity() { lateinit var binding: ActivityMainBinding override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = DataBindingUtil.setContentView(this, R.layout.activity_main) binding.One.setOnClickListener { Evaluate("1", clear = true) } binding.Two.setOnClickListener { Evaluate("2", clear = true) } binding.Three.setOnClickListener { Evaluate("3", clear = true) } binding.Four.setOnClickListener { Evaluate("4", clear = true) } binding.Five.setOnClickListener { Evaluate("5", clear = true) } binding.Six.setOnClickListener { Evaluate("6", clear = true) } binding.Seven.setOnClickListener { Evaluate("7", clear = true) } binding.Eight.setOnClickListener { Evaluate("8", clear = true) } binding.Nine.setOnClickListener { Evaluate("9", clear = true) } binding.Zero.setOnClickListener { Evaluate("0", clear = true) } /*Operators*/ binding.Plus.setOnClickListener { Evaluate("+", clear = true) } binding.Minus.setOnClickListener { Evaluate("-", clear = true) } binding.Mul.setOnClickListener { Evaluate("*", clear = true) } binding.Divide.setOnClickListener { Evaluate("/", clear = true) } binding.Dot.setOnClickListener { Evaluate(".", clear = true) } binding.Clear.setOnClickListener { binding.Expression.text = "" binding.Result.text = "" } binding.Equals.setOnClickListener { val text = binding.Expression.text.toString() val expression = ExpressionBuilder(text).build() val result = expression.evaluate() val longResult = result.toLong() if (result == longResult.toDouble()) { binding.Result.text = longResult.toString() } else { binding.Result.text = result.toString() } } binding.Back.setOnClickListener { val text = binding.Expression.text.toString() if (text.isNotEmpty()) { binding.Expression.text = text.drop(1) } else { binding.Result.text = "" } } } private fun Evaluate(string: String, clear: Boolean) { if (clear) { binding.Result.text = "" binding.Expression.append(string) } else { binding.Expression.append(binding.Result.text) binding.Expression.append(string) binding.Result.text = "" } } }
File: activity_main.xml
- Add the xml code given below in your file activity_main.xml.
<?xml version="1.0" encoding="utf-8"?> <layout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" android:background="@android:color/black" android:orientation="vertical"> <TextView android:id="@+id/Expression" android:layout_width="match_parent" android:layout_height="80dp" android:textColor="@color/actionButton" android:layout_gravity="end" android:ellipsize="start" android:singleLine="true" android:textSize="40sp" /> <TextView android:id="@+id/Result" android:layout_width="match_parent" android:layout_height="100dp" android:textColor="@color/white" android:layout_gravity="end" android:ellipsize="end" android:singleLine="true" android:textSize="30sp" /> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:orientation="horizontal"> <TextView android:id="@+id/Clear" style="@style/ActionButtonStyle" android:text="CLEAR" /> <TextView android:id="@+id/Divide" style="@style/ActionButtonStyle" android:text="/" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:orientation="horizontal"> <TextView android:id="@+id/Seven" style="@style/NumberButtonStyle" android:text="7" /> <TextView android:id="@+id/Eight" style="@style/NumberButtonStyle" android:text="8" /> <TextView android:id="@+id/Nine" style="@style/NumberButtonStyle" android:text="9" /> <TextView android:id="@+id/Mul" style="@style/NumberActionButton2" android:text="*" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:orientation="horizontal"> <TextView android:id="@+id/Four" style="@style/NumberButtonStyle" android:text="4" /> <TextView android:id="@+id/Five" style="@style/NumberButtonStyle" android:text="5" /> <TextView android:id="@+id/Six" style="@style/NumberButtonStyle" android:text="6" /> <TextView android:id="@+id/Minus" style="@style/NumberActionButton2" android:text="-" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:orientation="horizontal"> <TextView android:id="@+id/One" style="@style/NumberButtonStyle" android:text="1" /> <TextView android:id="@+id/Two" style="@style/NumberButtonStyle" android:text="2" /> <TextView android:id="@+id/Three" style="@style/NumberButtonStyle" android:text="3" /> <TextView android:id="@+id/Plus" style="@style/NumberActionButton2" android:text="+" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:orientation="horizontal"> <TextView android:id="@+id/Dot" style="@style/NumberButtonStyle" android:text="." /> <TextView android:id="@+id/Zero" style="@style/NumberButtonStyle" android:text="0" /> <TextView android:id="@+id/Back" style="@style/NumberButtonStyle" android:text="DEL" /> <TextView android:id="@+id/Equals" style="@style/EqualButtonStyle" android:text="=" /> </LinearLayout> </LinearLayout> </LinearLayout> </layout>
- We hope that this guide will assist you in quickly creating a simple WebView Android app. If you have any problems, please post them in the comments section and we will gladly assist you.
How to add Firebase to Android App | 2 Ways of Adding
Pingback: Media Player | Tutorial - Developers Dome
Pingback: Webview Example Tutorial in Android Studio - Developers Dome
Pingback: Video Player in Android Studio with Example - Developers Dome
Pingback: Eye Detecting Video Player in Android Studio - Developers Dome