0% found this document useful (0 votes)
12 views

Assignment 3

Uploaded by

MIT PATEL
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
12 views

Assignment 3

Uploaded by

MIT PATEL
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 13

Income Tax Calculation – Android Development

10/12/2021
Code
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#5082BF"
android:orientation="vertical"
tools:context=".MainActivity">

<androidx.cardview.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_centerVertical="true"
android:elevation="5dp"
android:translationZ="5dp"
app:cardCornerRadius="10.0dip"
app:cardUseCompatPadding="true">

<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content">

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:orientation="vertical"
android:padding="10dp">

<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Tax Calculation - Mit"
android:theme="@style/TextViewHeaderStyle" />

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20px"
android:orientation="horizontal"
android:weightSum="2">

<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="0.8"
android:text="Annual Income: "
android:textColor="@color/colorMainTextField"
android:textSize="18sp"
android:textStyle="bold" />

<com.google.android.material.textfield.TextInputEditText
android:id="@+id/etAnnualIncome"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1.2"
android:hint="Enter Tax"
android:inputType="number"
android:textColor="@color/colorMainTextField"
android:textSize="18sp"
android:textColorHint="@color/colorMainTextField" />

</LinearLayout>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20px"
android:orientation="vertical">

<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="RRSP contribution"
android:theme="@style/TextViewHeaderStyle" />
<com.google.android.material.slider.Slider
android:id="@+id/rrspSlider"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:valueFrom="0"
android:value="0"
android:valueTo="100"/>

</LinearLayout>

<Button
android:id="@+id/btnCalculate"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="20dp"
android:background="@drawable/button_background"
android:text="Calculate"
android:textAppearance="@style/TextAppearance.AppCompat.Medium"
android:theme="@style/ButtonStyle" />

<Button
android:id="@+id/btnRefresh"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="20dp"
android:background="@drawable/button_background"
android:text="Refresh"
android:textAppearance="@style/TextAppearance.AppCompat.Medium"
android:theme="@style/ButtonStyle" />

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:gravity="center"
android:orientation="horizontal">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:text="RRSP Contribution : "
android:textColor="@color/colorMainTextField"
android:textSize="18sp"
android:textStyle="bold" >

</TextView>

<TextView
android:id="@+id/tvRRSPContribute"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginTop="5dp"
android:textColor="@color/red"
android:textSize="18sp"
android:text="0 %"/>

</LinearLayout>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:gravity="center"
android:orientation="horizontal">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:text="Federal Tax : "
android:textColor="@color/colorMainTextField"
android:textSize="18sp"
android:textStyle="bold" >

</TextView>

<TextView
android:id="@+id/tvTaxFed"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginTop="5dp"
android:textColor="@color/red"
android:textSize="18sp"
android:text="$0"/>

</LinearLayout>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:gravity="center"
android:orientation="horizontal">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:text="Provincial Tax : "
android:textColor="@color/colorMainTextField"
android:textSize="18sp"
android:textStyle="bold" >

</TextView>

<TextView
android:id="@+id/tvTaxProv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="$0"
android:layout_marginLeft="10dp"
android:layout_marginTop="5dp"
android:textColor="@color/red"
android:textSize="18sp"/>

</LinearLayout>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:text="Total Tax : "
android:textColor="@color/colorMainTextField"
android:textSize="18sp"
android:textStyle="bold" >

</TextView>

<TextView
android:id="@+id/tvTaxTotal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginTop="5dp"
android:textColor="@color/red"
android:textSize="18sp"
android:text="$0"/>

</LinearLayout>

</LinearLayout>

</androidx.core.widget.NestedScrollView>

</androidx.cardview.widget.CardView>

</RelativeLayout>

Themes.xml (For button background and Font Style)


<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="Theme.TaxCalculation_Mit"
parent="Theme.MaterialComponents.DayNight.DarkActionBar">
<!-- Primary brand color. -->
<item name="colorPrimary">@color/purple_500</item>
<item name="colorPrimaryVariant">@color/purple_700</item>
<item name="colorOnPrimary">@color/white</item>
<!-- Secondary brand color. -->
<item name="colorSecondary">@color/teal_200</item>
<item name="colorSecondaryVariant">@color/teal_700</item>
<item name="colorOnSecondary">@color/black</item>
<!-- Status bar color. -->
<item name="android:statusBarColor"
tools:targetApi="l">?attr/colorPrimaryVariant</item>
<!-- Customize your theme here. -->
</style>

<!-- For common EditText property for all activity -->


<style name="TextViewHeaderStyle">
<item name="android:layout_marginTop">5dp</item>
<item name="android:gravity">center</item>
<item name="android:textSize">25sp</item>
<item name="android:textStyle">bold</item>
<item name="android:textColor">@color/colorMainTextField</item>
<item name="android:textAppearance">@style/TextAppearance.AppCompat.Large</
item>
</style>

<!-- For common EditText property for all activity -->


<style name="EditTextBlueStyle">
<item name="android:maxLines">1</item>
<item name="android:textColorHint">@color/colorMainTextField</item>
<item name="colorControlActivated">@color/colorMainTextField</item>
<item name="android:backgroundTint">@color/white</item>
<item
name="android:textAppearance">@style/TextAppearance.AppCompat.Medium</item>
</style>

<!-- For common Button property for all activity -->


<style name="ButtonStyle">
<item name="android:layout_gravity">center</item>
<item name="android:gravity">center</item>
<item name="android:textAllCaps">false</item>
<item name="android:background">@drawable/button_background</item>
<item name="android:textColor">@android:color/background_light</item>
<item name="android:textAppearance">@style/TextAppearance.AppCompat.Medium
</item>
</style>

</resources>

Button_background.xml (For circular Button shape)

<?xml version="1.0" encoding="utf-8"?>


<!-- res/drawable/rounded_edittext.xml -->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" android:padding="10dp">
<solid android:color="#0072BB"/>

<corners
android:bottomRightRadius="15dp"
android:bottomLeftRadius="15dp"
android:topLeftRadius="15dp"
android:topRightRadius="15dp"/>

</shape>

IncomeTaxCalculator.java
package com.example.taxcalculation_mit;

public class IncomeTaxCalculator {

double fedtax = 0;
double provtax = 0;

// Function to check the Fed Tax base upon the income


public double fedTaxCalculate(double income){
if(income <= 13808) {
fedtax = income * 0;
}
else if (income <= 48535) {
fedtax = 13808 * 0 + (income - 13808) * 0.15;
}
else if (income <= 97069){
fedtax = 13808 * 0 + (48535 - 13808) * 0.15 + (income - 48535) * 0.205;
}
else if (income <= 150473) {
fedtax = 13808 * 0 + (48535 - 13808) * 0.15 + (97069 - 48535) * 0.205 + (income -
97069) * 0.26;
}
else if (income <= 214368) {
fedtax = 13808 * 0 + (48535 - 13808) * 0.15 + (97069 - 48535) * 0.205 + (150473 -
97069) * 0.26 +
(income - 150473) * 0.29;
}
else {
fedtax = 13808 * 0 + (48535 - 13808) * 0.15 + (97069 - 48535) * 0.205 + (150473 -
97069) * 0.26 + (214368 - 150473) * 0.29
+ (income - 214368) * 0.33;
}

return fedtax;
}

// Function to check the Provincial Tax base upon the income


public double provincialTaxCalculate(double income){
//
if (income <= 10880) {
provtax = income * 0;
}
else if (income <= 45142) {
provtax = 10880 * 0 + (income - 10880) * 0.0505;
}
else if (income <= 90287) {
provtax = 10880 * 0 + (45142 - 10880) * 0.0505 + (income - 45142) * 0.0915;
}
else if (income <= 150000) {
provtax = 10880 * 0 + (45142 - 10880) * 0.0505 + (90287 - 45142) * 0.0915 + (income
- 90287) * 0.1116;
}
else if (income <= 220000) {
provtax = 10880 * 0 + (45142 - 10880) * 0.0505 + (90287 - 45142) * 0.0915 + (150000
- 90287) * 0.1116 +
(income - 150000) * 0.1216;
}
else {
provtax = 10880 * 0 + (45142 - 10880) * 0.0505 + (90287 - 45142) * 0.0915 + (150000
- 90287) * 0.1116 + (220000 - 150000) * 0.29
+ (income - 220000) * 0.1316;
}
return provtax;

MainActivity.java

package com.example.taxcalculation_mit;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import com.google.android.material.slider.Slider;

public class MainActivity extends AppCompatActivity {

EditText etAnnualIncome;
Slider slider;
TextView tvTaxFed,tvTaxProv,tvTaxTotal, tvRRSPContribute;
IncomeTaxCalculator calculator;
Long fedTax;
Long provTax;
float totalTax;
float rrspTax;
Button btnCalculateTax, btnRefresh;
Double income;
public static final String MyPREFERENCES = "MyPrefs" ;
public static final String incomeKey = "incomeKey";
public static final String FedKey = "FedKey";
public static final String rrspKey = "rrspKey";
public static final String ProvKey = "ProvKey";
public static final String TotalKey = "TotalKey";
SharedPreferences sharedpreferences;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

calculator = new IncomeTaxCalculator();


btnCalculateTax = findViewById(R.id.btnCalculate);
btnRefresh = findViewById(R.id.btnRefresh);
slider = (Slider) findViewById(R.id.rrspSlider);
etAnnualIncome = findViewById(R.id.etAnnualIncome);
tvTaxFed = findViewById(R.id.tvTaxFed);
tvTaxProv = findViewById(R.id.tvTaxProv);
tvTaxTotal = findViewById(R.id.tvTaxTotal);
tvRRSPContribute = findViewById(R.id.tvRRSPContribute);

sharedpreferences = getSharedPreferences(MyPREFERENCES,
Context.MODE_PRIVATE);

slider.addOnSliderTouchListener(new Slider.OnSliderTouchListener() {
@Override
public void onStartTrackingTouch(@NonNull Slider slider) {
}

@Override
public void onStopTrackingTouch(@NonNull Slider slider) {
rrspTax = slider.getValue();
Log.d("ending", String.valueOf(rrspTax));
}
});

btnRefresh.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(sharedpreferences.getString("incomeKey",null) != null) {
etAnnualIncome.setText(sharedpreferences.getString("incomeKey",null));
slider.setValue(Float.parseFloat(sharedpreferences.getString("rrspKey",null)));
tvRRSPContribute.setText(slider.getValue() + "%");
tvTaxFed.setText(sharedpreferences.getString("FedKey",null));
tvTaxProv.setText(sharedpreferences.getString("ProvKey",null));
tvTaxTotal.setText(sharedpreferences.getString("TotalKey",null));
}
else {
CalculateTax(v);
}
}
});

btnCalculateTax.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
CalculateTax(v);
}
});
}

public void CalculateTax(View view) {


String i= etAnnualIncome.getText().toString().trim();
if(i.isEmpty() || i.equals("") || i == null)
{
Toast.makeText(this, "Please Enter Your Income First!!!",
Toast.LENGTH_SHORT).show();
}
else
{
income = Double.parseDouble(i);

tvRRSPContribute.setText(slider.getValue() + "%");
fedTax = Math.round(calculator.fedTaxCalculate(income));
tvTaxFed.setText("$ "+fedTax.toString());
provTax = Math.round(calculator.provincialTaxCalculate(income));
tvTaxProv.setText("$ "+provTax.toString());
float rrst = (fedTax + provTax) * (rrspTax/100);
totalTax = (fedTax + provTax) - rrst;
tvTaxTotal.setText("$ "+totalTax);

SharedPreferences.Editor editor = sharedpreferences.edit();

editor.putString(FedKey, String.valueOf(fedTax));
editor.putString(ProvKey, String.valueOf(provTax));
editor.putString(rrspKey, String.valueOf(slider.getValue()));
editor.putString(TotalKey, String.valueOf(totalTax));
editor.putString(incomeKey, String.valueOf(income));
editor.commit();
}

@Override
protected void onStart() {
super.onStart();
}
}

You might also like