Layouts:
@ home.xml Layout: This layout is the welcome layout for Quick Calculator application. In this layout, a wallpaper is set as background of the layout. While we start this application, this layout runs for 3 seconds.
Listing 1: home.xml layout
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/calc"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="35dp"
android:layout_marginLeft="20dp"
android:layout_marginTop="25dp"
android:text="@string/app_name"
android:textColor="#000"
android:textSize="25sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="25dp"
android:layout_marginLeft="70dp"
android:layout_weight="0.04"
android:text="@string/app_name_slogan"
android:textColor="#000"
android:textSize="15sp" />
</LinearLayout>
Java Class Files:
Every Android project contains a "res" (reources) folder. This folder is meant to comprise of number of subfolders.
Listing 2: calc.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".Home"
android:background="#fff" >
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/disp"
android:id = "@+id/display"
android:hint="@string/dispHint" />
<LinearLayout android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:paddingTop="20dp">
<Button
android:layout_width="55dp"
android:layout_height="wrap_content"
android:id = "@+id/seven"
android:text="@string/seven"
/>
<Button
android:layout_width="55dp"
android:layout_height="wrap_content"
android:id = "@+id/eight"
android:text="@string/eight"
/>
<Button
android:layout_width="55dp"
android:layout_height="wrap_content"
android:id = "@+id/nine"
android:text="@string/nine"
/>
<Button
android:layout_width="55dp"
android:layout_height="wrap_content"
android:id = "@+id/div"
android:text="@string/div"
/>
</LinearLayout>
<LinearLayout android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:paddingTop="20dp">
<Button
android:layout_width="55dp"
android:layout_height="wrap_content"
android:id = "@+id/four"
android:text="@string/four"
/>
<Button
android:layout_width="55dp"
android:layout_height="wrap_content"
android:id = "@+id/five"
android:text="@string/five"
/>
<Button
android:layout_width="55dp"
android:layout_height="wrap_content"
android:id = "@+id/six"
android:text="@string/six"
/>
<Button
android:layout_width="55dp"
android:layout_height="wrap_content"
android:id = "@+id/mul"
android:text="@string/mul"
/>
</LinearLayout>
<LinearLayout android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:paddingTop="20dp">
<Button
android:layout_width="55dp"
android:layout_height="wrap_content"
android:id = "@+id/one"
android:text="@string/one"
/>
<Button
android:layout_width="55dp"
android:layout_height="wrap_content"
android:id = "@+id/two"
android:text="@string/two"
/>
<Button
android:layout_width="55dp"
android:layout_height="wrap_content"
android:id = "@+id/three"
android:text="@string/three"
/>
<Button
android:layout_width="55dp"
android:layout_height="wrap_content"
android:id = "@+id/sub"
android:text="@string/sub"
/>
</LinearLayout>
<LinearLayout android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:paddingTop="20dp">
<Button
android:layout_width="55dp"
android:layout_height="wrap_content"
android:id = "@+id/cancel"
android:text="@string/cancel"
/>
<Button
android:layout_width="55dp"
android:layout_height="wrap_content"
android:id = "@+id/zero"
android:text="@string/zero"
/>
<Button
android:layout_width="55dp"
android:layout_height="wrap_content"
android:id = "@+id/equal"
android:text="@string/equal"
/>
<Button
android:layout_width="55dp"
android:layout_height="wrap_content"
android:id = "@+id/add"
android:text="@string/add"
/>
</LinearLayout>
</LinearLayout>
Home class defined in the Home.java file.
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
public class Home extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.home);
Thread th = new Thread(){
public void run(){
try{
sleep(1000);
}
catch(Exception e){
e.printStackTrace();
}
finally{
onPause();
startActivity(new Intent("com.one.slate.CALC"));
}
}
};
th.start();
}
@Override
public void onPause(){
super.onPause();
finish();
}
}
Calculator class defind into the Calc.java file.
import android.os.Bundle;
import android.app.Activity;
import android.text.Editable;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class Calc extends Activity implements View.OnClickListener{
Button one, two, three, four, five, six, seven, eight, nine, zero, add, sub, mul, div, cancel, equal;
EditText disp;
int op1;
int op2;
String optr;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
one = (Button) findViewById(R.id.one);
two = (Button) findViewById(R.id.two);
three = (Button) findViewById(R.id.three);
four = (Button) findViewById(R.id.four);
five = (Button) findViewById(R.id.five);
six = (Button) findViewById(R.id.six);
seven = (Button) findViewById(R.id.seven);
eight = (Button) findViewById(R.id.eight);
nine = (Button) findViewById(R.id.nine);
zero = (Button) findViewById(R.id.zero);
add = (Button) findViewById(R.id.add);
sub = (Button) findViewById(R.id.sub);
mul = (Button) findViewById(R.id.mul);
div = (Button) findViewById(R.id.div);
cancel = (Button) findViewById(R.id.cancel);
equal = (Button) findViewById(R.id.equal);
disp = (EditText) findViewById(R.id.display);
try{
one.setOnClickListener(this);
two.setOnClickListener(this);
three.setOnClickListener(this);
four.setOnClickListener(this);
five.setOnClickListener(this);
six.setOnClickListener(this);
seven.setOnClickListener(this);
eight.setOnClickListener(this);
nine.setOnClickListener(this);
zero.setOnClickListener(this);
cancel.setOnClickListener(this);
add.setOnClickListener(this);
sub.setOnClickListener(this);
mul.setOnClickListener(this);
div.setOnClickListener(this);
equal.setOnClickListener(this);
}
catch(Exception e){
}
}
public void operation(){
if(optr.equals("+")){
op2 = Integer.parseInt(disp.getText().toString());
disp.setText("");
op1 = op1 + op2;
disp.setText("Result : " + Integer.toString(op1));
}
else if(optr.equals("-")){
op2 = Integer.parseInt(disp.getText().toString());
disp.setText("");
op1 = op1 - op2;
disp.setText("Result : " + Integer.toString(op1));
}
else if(optr.equals("*")){
op2 = Integer.parseInt(disp.getText().toString());
disp.setText("");
op1 = op1 * op2;
disp.setText("Result : " + Integer.toString(op1));
}
else if(optr.equals("/")){
op2 = Integer.parseInt(disp.getText().toString());
disp.setText("");
op1 = op1 / op2;
disp.setText("Result : " + Integer.toString(op1));
}
}
@Override
public void onClick(View arg0) {
Editable str = disp.getText();
switch(arg0.getId()){
case R.id.one:
if(op2 != 0){
op2 = 0;
disp.setText("");
}
str = str.append(two.getText());
disp.setText(str);
break;
case R.id.two:
if(op2 != 0){
op2 = 0;
disp.setText("");
}
str = str.append(two.getText());
disp.setText(str);
break;
case R.id.three:
if(op2 != 0){
op2 = 0;
disp.setText("");
}
str = str.append(three.getText());
disp.setText(str);
break;
case R.id.four:
if(op2 != 0){
op2 = 0;
disp.setText("");
}
str = str.append(four.getText());
disp.setText(str);
break;
case R.id.five:
if(op2 != 0){
op2 = 0;
disp.setText("");
}
str = str.append(five.getText());
disp.setText(str);
break;
case R.id.six:
if(op2 != 0){
op2 = 0;
disp.setText("");
}
str = str.append(six.getText());
disp.setText(str);
break;
case R.id.seven:
if(op2 != 0){
op2 = 0;
disp.setText("");
}
str = str.append(eight.getText());
disp.setText(str);
break;
case R.id.eight:
if(op2 != 0){
op2 = 0;
disp.setText("");
}
str = str.append(nine.getText());
disp.setText(str);
break;
case R.id.nine:
if(op2 != 0){
op2 = 0;
disp.setText("");
}
str = str.append(zero.getText());
disp.setText(str);
break;
case R.id.cancel:
op1 = 0;
op2 = 0;
disp.setText("");
disp.setHint("Perform Operation :)");
break;
case R.id.add:
optr = "+";
if(op1 == 0){
op1 = Integer.parseInt(disp.getText().toString());
disp.setText("");
}
else if(op2 != 0){
op2 = 0;
disp.setText("");
}
else{
op2 = Integer.parseInt(disp.getText().toString());
disp.setText("");
op1 = op1 + op2;
disp.setText("Result : " + Integer.toString(op1));
}
break;
case R.id.sub:
optr = "-";
if(op1 == 0){
op1 = Integer.parseInt(disp.getText().toString());
disp.setText("");
}
else if(op2 != 0){
op2 = 0;
disp.setText("");
}
else{
op2 = Integer.parseInt(disp.getText().toString());
disp.setText("");
op1 = op1 - op2;
disp.setText("Result : " + Integer.toString(op1));
}
break;
case R.id.mul:
optr = "*";
if(op1 == 0){
op1 = Integer.parseInt(disp.getText().toString());
disp.setText("");
}
else if(op2 != 0){
op2 = 0;
disp.setText("");
}
else{
op2 = Integer.parseInt(disp.getText().toString());
disp.setText("");
op1 = op1 * op2;
disp.setText("Result : " + Integer.toString(op1));
}
break;
case R.id.div:
optr = "/";
if(op1 == 0){
op1 = Integer.parseInt(disp.getText().toString());
disp.setText("");
}
else if(op2 != 0){
op2 = 0;
disp.setText("");
}
else{
op2 = Integer.parseInt(disp.getText().toString());
disp.setText("");
op1 = op1 / op2;
disp.setText("Result : " + Integer.toString(op1));
}
break;
case R.id.equal:
if(!optr.equals(null)){
if(op2 != 0){
if(optr.equals("+")){
disp.setText("");
/*op1 = op1 + op2;*/
disp.setText("Result : " + Integer.toString(op1));
}
else if(optr.equals("-")){
disp.setText("");/*
op1 = op1 - op2;*/
disp.setText("Result : " + Integer.toString(op1));
}
else if(optr.equals("*")){
dispsetText("");/*
op1 = op1 * op2;*/
disp.setText("Result : " + Integer.toString(op1));
}
else if(optr.equals("/")){
disp.setText("");/*
op1 = op1 / op2;*/
disp.setText("Result : " + Integer.toString(op1));
}
}
else{
operation();
}
}
break;
}
}
}
XML : AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.androidvinod"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.one.slate.Home"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.one.slate.Calc"
android:label="@string/app_name" >
<intent-filter>
<action android:name="com.one.slate.CALC" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application>
</manifest>
No comments:
Post a Comment