Simple Calculator in Android (Xamarin) using VisualStudio C#
In Brief: This article will help you on building a simple calculator in android Xamarin with simple steps using C# Language in Visual Studio.
Detail:
Building this simple calculator will let you learn how to work with the Android Buttons, Text View and simple functions. The UI is not so beautiful but is a great way to learn the basic functionalities.
Steps:
1. Edit the Main.axml file.
The code in Main.axml file
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <EditText android:inputType="text" android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/resultText" android:background="@android:color/darker_gray" android:textColor="@android:color/background_dark" android:textSize="@android:dimen/app_icon_size" android:cursorVisible="false" android:clickable="false" android:editable="false" android:enabled="false" /> <EditText android:inputType="number" android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/resultText2" android:background="@android:color/darker_gray" android:textColor="@android:color/background_dark" android:textSize="@android:dimen/app_icon_size" android:cursorVisible="false" android:enabled="false" android:editable="false" android:clickable="false" /> <LinearLayout android:id="@+id/wrapper1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_below="@+id/wrapper0" android:weightSum="1.0"> <Button android:text="1" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight=".25" android:id="@+id/btn1" /> <Button android:text="2" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_toRightOf="@+id/btn1" android:layout_alignTop="@+id/btn1" android:layout_weight=".25" android:id="@+id/btn2" /> <Button android:text="3" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_toRightOf="@+id/btn2" android:layout_alignTop="@+id/btn2" android:layout_weight=".25" android:id="@+id/btn3" /> <Button android:text="DEL" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_toRightOf="@+id/btn3" android:layout_alignTop="@+id/btn3" android:layout_weight=".25" android:id="@+id/btnDel" /> </LinearLayout> <LinearLayout android:id="@+id/wrapper2" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_below="@+id/wrapper1" android:weightSum="1.0"> <Button android:text="4" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_below="@+id/wrapper2" android:layout_weight=".25" android:id="@+id/btn4" /> <Button android:text="5" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_toRightOf="@+id/btn4" android:layout_alignTop="@+id/btn4" android:layout_weight=".25" android:id="@+id/btn5" /> <Button android:text="6" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_toRightOf="@+id/btn5" android:layout_alignTop="@+id/btn5" android:layout_weight=".25" android:id="@+id/btn6" /> <Button android:text="-" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_toRightOf="@+id/btn6" android:layout_alignTop="@+id/btn6" android:layout_weight=".25" android:id="@+id/btnSub" /> </LinearLayout> <LinearLayout android:id="@+id/wrapper3" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_below="@+id/wrapper2" android:weightSum="1.0"> <Button android:text="7" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_below="@+id/wrapper3" android:layout_weight=".25" android:id="@+id/btn7" /> <Button android:text="8" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_toRightOf="@+id/btn7" android:layout_alignTop="@+id/btn7" android:layout_weight=".25" android:id="@+id/btn8" /> <Button android:text="9" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_toRightOf="@+id/btn8" android:layout_alignTop="@+id/btn8" android:layout_weight=".25" android:id="@+id/btn9" /> <Button android:text="x" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_toRightOf="@+id/btn9" android:layout_alignTop="@+id/btn9" android:layout_weight=".25" android:id="@+id/btnMul" /> </LinearLayout> <LinearLayout android:id="@+id/wrapper4" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_below="@+id/wrapper3" android:weightSum="1.0"> <Button android:text="." android:layout_width="0dp" android:layout_height="wrap_content" android:layout_below="@+id/btn7" android:layout_weight=".20" android:id="@+id/btnDot" /> <Button android:text="0" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_toRightOf="@+id/btnDot" android:layout_alignTop="@+id/btnDot" android:layout_weight=".20" android:id="@+id/btn0" /> <Button android:text="=" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_toRightOf="@+id/btn0" android:layout_alignTop="@+id/btnDot" android:layout_weight=".20" android:id="@+id/btnEql" /> <Button android:text="/" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_toRightOf="@+id/btnEql" android:layout_alignTop="@+id/btnEql" android:layout_weight=".20" android:id="@+id/btnDiv" /> <Button android:text="+" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_toRightOf="@+id/btnDiv" android:layout_alignTop="@+id/btnDiv" android:layout_weight=".20" android:id="@+id/btnAdd" /> </LinearLayout> </LinearLayout>
2. Preview the design in the designer mode in Visual Studio.
3. The code portion that will perform the events is written in the MainActivity.cs File.
4. Edit the MainActivity.cs File.
5. Add the following References
using Android.App; using Android.Widget; using Android.OS; using System; using System.Data;
6. Write the code
The code in MainActivity.cs is below
using Android.App;
using Android.Widget;
using Android.OS;
using System;
using System.Data;
namespace CalculatorApp
{
[Activity(Label = "CalculatorApp", MainLauncher = true, Icon = "@drawable/icon")]
public class MainActivity : Activity
{
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
// Set our view from the "main" layout resource
SetContentView (Resource.Layout.Main);
//Buttons to receive user input
Button num1 = (Button)FindViewById(Resource.Id.btn1);
Button num2 = (Button)FindViewById(Resource.Id.btn2);
Button num3 = (Button)FindViewById(Resource.Id.btn3);
Button num4 = (Button)FindViewById(Resource.Id.btn4);
Button num5 = (Button)FindViewById(Resource.Id.btn5);
Button num6 = (Button)FindViewById(Resource.Id.btn6);
Button num7 = (Button)FindViewById(Resource.Id.btn7);
Button num8 = (Button)FindViewById(Resource.Id.btn8);
Button num9 = (Button)FindViewById(Resource.Id.btn9);
Button num0 = (Button)FindViewById(Resource.Id.btn0);
//Buttons that receive user mathematical operators
Button equ = (Button)FindViewById(Resource.Id.btnEql);
Button clr = (Button)FindViewById(Resource.Id.btnDel);
Button dot = (Button)FindViewById(Resource.Id.btnDot);
Button div = (Button)FindViewById(Resource.Id.btnDiv);
Button mul = (Button)FindViewById(Resource.Id.btnMul);
Button add = (Button)FindViewById(Resource.Id.btnAdd);
Button sub = (Button)FindViewById(Resource.Id.btnSub);
//text area to receive and display the user input
EditText resu = (EditText)FindViewById(Resource.Id.resultText);
//Text area to display the result generated after calculations
EditText resu2 = (EditText)FindViewById(Resource.Id.resultText2);
//Whenever the text in the EditText Changes the expression in the EditText is being computed.
resu.TextChanged += delegate
{
if (resu.Text == "")
{
resu2.Text = "";
}
string x = resu.Text;
try
{
//Computation of the expression
double result = Convert.ToDouble(new DataTable().Compute(x, null));
resu2.Text = result.ToString();
}
catch (Exception exc)
{
//No action to be performed
}
};
num1.Click += delegate { resu.Text = resu.Text + num1.Text.ToString(); };
num2.Click += delegate { resu.Text = resu.Text + num2.Text.ToString(); };
num3.Click += delegate { resu.Text = resu.Text + num3.Text.ToString(); };
num4.Click += delegate { resu.Text = resu.Text + num4.Text.ToString(); };
num5.Click += delegate { resu.Text = resu.Text + num5.Text.ToString(); };
num6.Click += delegate { resu.Text = resu.Text + num6.Text.ToString(); };
num7.Click += delegate { resu.Text = resu.Text + num7.Text.ToString(); };
num8.Click += delegate { resu.Text = resu.Text + num8.Text.ToString(); };
num9.Click += delegate { resu.Text = resu.Text + num9.Text.ToString(); };
num0.Click += delegate { resu.Text = resu.Text + num0.Text.ToString(); };
dot.Click += delegate
{
string x = resu.Text;
int l = x.Length;
if (l != 0)
{
string x2 = x.Substring(l - 1, 1);
if (x2 != ".")
{
if (x2 == "-" || x2 == "*" || x2 == "/" || x2 == "+")
{
string s1 = x.Substring(0, l - 1);
resu.Text = s1;
}
resu.Text = resu.Text + dot.Text.ToString();
}
}
};
add.Click += delegate
{
string x = resu.Text;
int l = x.Length;
if (l != 0)
{
string x2 = x.Substring(l - 1, 1);
if (x2 != "+")
{
if (x2 == "-" || x2 == "*" || x2 == "/" || x2 == ".")
{
string s1 = x.Substring(0, l - 1);
resu.Text = s1;
}
resu.Text = resu.Text + add.Text.ToString();
}
}
};
sub.Click += delegate
{
string x = resu.Text;
int l = x.Length;
if (l != 0)
{
string x2 = x.Substring(l - 1, 1);
if (x2 != "-")
{
if (x2 == "+" || x2 == "*" || x2 == "/" || x2 == ".")
{
string s1 = x.Substring(0, l - 1);
resu.Text = s1;
}
resu.Text = resu.Text + sub.Text.ToString();
}
}
};
mul.Click += delegate
{
string x = resu.Text;
int l = x.Length;
if (l != 0)
{
string x2 = x.Substring(l - 1, 1);
if (x2 != "*")
{
if (x2 == "-" || x2 == "+" || x2 == "/" || x2 == ".")
{
string s1 = x.Substring(0, l - 1);
resu.Text = s1;
}
resu.Text = resu.Text + "*";
}
}
};
div.Click += delegate
{
string x = resu.Text;
int l = x.Length;
if (l != 0)
{
string x2 = x.Substring(l - 1, 1);
if (x2 != "/")
{
if (x2 == "-" || x2 == "*" || x2 == "+" || x2 == ".")
{
string s1 = x.Substring(0, l - 1);
resu.Text = s1;
}
resu.Text = resu.Text + div.Text.ToString();
}
}
};
clr.Click += delegate
{
string x = resu.Text;
int l = x.Length;
if (l != 0)
{
string x2 = x.Substring(0, l - 1);
resu.Text = x2;
if (x2.Length != 0)
{
string x3 = x2.Substring(l - 2, 1);
if (x3 == "+" || x3 == "-" || x3 == "*" || x3 == "/" || x3 == ".")
{
try
{
double result = Convert.ToDouble(new DataTable().Compute(x.Substring(0, l - 2), null));
resu2.Text = result.ToString();
}
catch (Exception exc)
{
}
}
}
}
};
equ.Click += delegate
{
if (resu2.Text != "")
{
resu.Text = resu2.Text;
resu2.Text = "";
}
};
}
private void Resu_TextChanged(object sender, Android.Text.TextChangedEventArgs e)
{
throw new System.NotImplementedException();
}
}
}
7. Build the app.Complete Source code can be Downloaded from :-Download Cacluator App Android Source Code using Xamarin C#
Enjoy.... Happy Coding... :-)
Thanks for your time, although it is lengthier but is simple. Feel free to post any issues or Suggestions.


Vidmate 2013
ReplyDelete, revolutionized video downloading for millions worldwide. This innovative app provides a seamless platform for users to download videos from various online sources with ease. Vidmate swiftly garnered popularity due to its user-friendly interface and extensive compatibility with numerous video hosting platforms. With Vidmate, users can effortlessly save their favorite videos for offline viewing, transcending limitations of internet connectivity. Its intuitive design and robust functionality make Vidmate a must-have tool for avid video enthusiasts. Since its inception, Vidmate has remained a trusted companion for countless users seeking convenient access to their preferred video content.
You can find the APK version of this app from here...
ReplyDeleteVery impressive and worth reading Blogs/a>
ReplyDeleteLa calculadora alicia es una herramienta didáctica utilizada en algunos entornos educativos para apoyar el aprendizaje de las matemáticas. Está diseñada para ayudar a los estudiantes a realizar operaciones básicas como suma, resta, multiplicación y división de forma rápida y sencilla. Su uso permite que los alumnos se enfoquen más en comprender los procedimientos y resolver problemas, en lugar de preocuparse únicamente por los cálculos manuales.
ReplyDeleteA stremio addon is an extension that enhances the functionality of Stremio by providing access to different types of content such as movies, TV shows, live channels, and online videos. These add-ons connect Stremio to various content sources, allowing users to customize their viewing experience based on their preferences. Some add-ons are official and safe, while others are created by third parties to offer additional streaming options.
ReplyDeleteMathPrint calculator online refers to a web-based calculator tool that displays mathematical expressions in the same format you see in textbooks, making equations easier to read and understand. It allows users to enter fractions, roots, exponents, and complex expressions in a natural layout instead of a single-line format. Many online versions are based on features found in calculators like the TI-84 Plus CE, which uses MathPrint-style input to improve clarity when solving problems.
ReplyDeleteIl calcolo stipendio netto è il processo attraverso il quale si determina l'importo effettivamente percepito da un lavoratore dopo le trattenute fiscali e contributive applicate allo stipendio lordo. Per ottenere lo stipendio netto, vengono sottratti i contributi previdenziali, le imposte sul reddito e altre eventuali detrazioni previste dalla normativa vigente. Il risultato finale rappresenta la somma che il dipendente riceve sul proprio conto corrente.
ReplyDeletecar hire Cabo Roig is one of the most convenient ways to explore the beautiful surroundings of Cabo Roig and the wider Costa Blanca region. Visitors can choose from a range of rental vehicles, making it easy to travel comfortably between nearby beaches, shopping areas, and popular towns like Torrevieja and Alicante.
ReplyDeleteA Free grade calculator and GPA tools is a convenient solution for students who want to track their academic progress quickly and accurately. It allows you to calculate grades for assignments, quizzes, exams, and courses while also estimating your overall GPA based on credit hours and grade points. With fast, error-free calculations, these tools help students understand their performance, set academic goals, and make informed decisions about future coursework. Easy to use and completely free, they are valuable resources for students at every education level.
ReplyDelete