In: Computer Science
Application on Android Studio
"Tip Calculator" that calculates tip amount and total bill
amount
1. Takes as input a bill amount.
2. Allows user to select a tip percentage between 0-25%
3. Displays tip amount and total amount (total amount = bill amount+ tip amount)
Hint: As tip percentage is a fixed range, you can use a SEEKBAR and as user slides the bar, auto calculate the tip amount and total amount.
Android code for the simple tip calculator is given below
MainActivity.java file:
package com.example.tipcalculator;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v7.app.AppCompatActivity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.SeekBar;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
private EditText totalBillAmount;
private SeekBar tipPercent;
private TextView totalAmountToBePaid;
private TextView totalAmountOfTipsToBePaid;
private Button calculateTips;
private int tipPercentValue = 0;
private int tipsForNumberOfPeople = 0;
private TextView tipPercentLabel;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_tip_calculator);
totalBillAmount = (EditText)findViewById(R.id.bill_value);
tipPercent = (SeekBar)findViewById(R.id.seekBar);
totalAmountToBePaid = (TextView)findViewById(R.id.total_to_pay_result);
totalAmountOfTipsToBePaid = (TextView)findViewById(R.id.total_tip_result);
tipPercentLabel = (TextView)findViewById(R.id.tip_percent);
tipPercent.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
tipPercentValue = progress/4;
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
tipPercentLabel.setText("Tip Percent - " + seekBar.getProgress()/4);
}
});
calculateTips = (Button) findViewById(R.id.calculate_tips);
calculateTips.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (totalBillAmount.getText().toString().equals("") || totalBillAmount.getText().toString().isEmpty()) {
Toast.makeText(getApplicationContext(), "All Input field must be filled", Toast.LENGTH_LONG).show();
return;
}
double totalBillInput = Double.parseDouble(totalBillAmount.getText().toString());
if (tipPercentValue == 0 ) {
Toast.makeText(getApplicationContext(), "Set values for Tip percent and split number", Toast.LENGTH_LONG).show();
return;
}
double percentageOfTip = (totalBillInput * tipPercentValue) / 100;
double totalAmountForTheBill = totalBillInput + percentageOfTip;
totalAmountToBePaid.setText(removeTrailingZero(String.valueOf(String.format("%.2f", totalAmountForTheBill))));
totalAmountOfTipsToBePaid.setText(removeTrailingZero(String.valueOf(String.format("%.2f", percentageOfTip))));
}
});
//return view;
}
public String removeTrailingZero(String formattingInput) {
if (!formattingInput.contains(".")) {
return formattingInput;
}
int dotPosition = formattingInput.indexOf(".");
String newValue = formattingInput.substring(dotPosition, formattingInput.length());
if (newValue.startsWith(".0")) {
return formattingInput.substring(0, dotPosition);
}
return formattingInput;
}
}
fragment_tip_calculator.xml file:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<ScrollView
android:id="@+id/scroll_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_above="@+id/calculate_tips"
android:layout_marginBottom="6dp"
android:background="#ffffff"
android:padding="16dp"
android:scrollbars="none">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/first_binary"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_marginTop="89dp"
android:text="total_bill"
android:textStyle="bold"
/>
<EditText
android:id="@+id/bill_value"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/first_binary"
android:layout_marginTop="4dp"
android:lines="3"
android:inputType="numberDecimal"
android:padding="8dp" />
<TextView
android:id="@+id/tip_percent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:layout_below="@+id/bill_value"
android:text="tip_percent"
android:textStyle="bold"
/>
<SeekBar
android:id="@+id/seekBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:layout_below="@+id/tip_percent"/>
<TextView
android:id="@+id/total_to_pay"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/seekBar_one"
android:layout_marginTop="354dp"
android:text="total_amount_to_pay"
android:textStyle="bold" />
<TextView
android:id="@+id/total_to_pay_result"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:layout_below="@+id/total_to_pay"
android:textStyle="bold"
/>
<TextView
android:id="@+id/total_tip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:layout_below="@+id/total_to_pay_result"
android:text="total_tip"
android:textStyle="bold"
/>
<TextView
android:id="@+id/total_tip_result"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:layout_below="@+id/total_tip"
android:textStyle="bold"
/>
<TextView
android:id="@+id/tip_per_person_result"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:layout_below="@+id/tip_per_person"
android:textStyle="bold"
/>
</RelativeLayout>
</ScrollView>
<Button
android:id="@+id/calculate_tips"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="calculate_tip"
android:textAllCaps="false"
android:padding="12dp"
android:layout_centerHorizontal="true"
android:layout_marginBottom="8dp"
android:layout_alignParentBottom="true"/>
</RelativeLayout>
Screenshots:







Output Screenshots:


