First, the calculator 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:orientation= "Vertical" >
<edittext
Android:layout_width= "Fill_parent"
android:layout_height= "60DP"
Android:editable= "false"
Android:gravity= "Bottom|right"
android:background= "@drawable/WHITE_BG"
Android:id= "@+id/et_input"
/>
<linearlayout
Android:layout_width= "Fill_parent"
android:layout_height= "Wrap_content"
android:layout_margintop= "20DP"
android:orientation= "Horizontal"
Android:gravity= "Center_horizontal"
>
<button
Android:id= "@+id/btn_clear"
Android:layout_width= "60DP"
android:layout_height= "60DP"
android:text= "@string/btn_clear"
android:background= "@drawable/white_selector"
Android:textsize= "20SP"
/>
<button
Android:id= "@+id/btn_del"
Android:layout_width= "60DP"
android:layout_height= "60DP"
android:layout_marginleft= "10DP"
android:background= "@drawable/white_selector"
android:text= "@string/btn_del"
Android:textsize= "20SP"
/>
<button
Android:id= "@+id/btn_divide"
Android:layout_width= "60DP"
android:layout_height= "60DP"
android:layout_marginleft= "10DP"
android:text= "@string/btn_divide"
android:background= "@drawable/white_selector"
Android:textsize= "20SP"
/>
<button
Android:id= "@+id/btn_multiply"
Android:layout_width= "60DP"
android:layout_height= "60DP"
android:layout_marginleft= "10DP"
android:background= "@drawable/white_selector"
android:text= "@string/btn_multiply"
Android:textsize= "20SP"
/>
</LinearLayout>
<linearlayout
Android:layout_width= "Fill_parent"
android:layout_height= "Wrap_content"
android:layout_margintop= "10DP"
android:orientation= "Horizontal"
Android:gravity= "Center_horizontal"
>
<button
Android:id= "@+id/btn_7"
Android:layout_width= "60DP"
android:layout_height= "60DP"
android:text= "@string/btn_7"
android:background= "@drawable/white_selector"
Android:textsize= "20SP"
/>
<button
Android:id= "@+id/btn_8"
Android:layout_width= "60DP"
android:layout_height= "60DP"
android:layout_marginleft= "10DP"
android:text= "@string/btn_8"
android:background= "@drawable/white_selector"
Android:textsize= "20SP"
/>
<button
Android:id= "@+id/btn_9"
Android:layout_width= "60DP"
android:layout_height= "60DP"
android:layout_marginleft= "10DP"
android:background= "@drawable/white_selector"
android:text= "@string/btn_9"
Android:textsize= "20SP"
/>
<button
Android:id= "@+id/btn_minus"
Android:layout_width= "60DP"
android:layout_height= "60DP"
android:layout_marginleft= "10DP"
android:background= "@drawable/white_selector"
android:text= "@string/btn_minus"
Android:textsize= "20SP"
/>
</LinearLayout>
<linearlayout
Android:layout_width= "Fill_parent"
android:layout_height= "Wrap_content"
android:layout_margintop= "10DP"
android:orientation= "Horizontal"
Android:gravity= "Center_horizontal"
>
<button
Android:id= "@+id/btn_4"
Android:layout_width= "60DP"
android:layout_height= "60DP"
android:background= "@drawable/white_selector"
android:text= "@string/btn_4"
Android:textsize= "20SP"
/>
<button
Android:id= "@+id/btn_5"
Android:layout_width= "60DP"
android:layout_height= "60DP"
android:layout_marginleft= "10DP"
android:background= "@drawable/white_selector"
android:text= "@string/btn_5"
Android:textsize= "20SP"
/>
<button
Android:id= "@+id/btn_6"
Android:layout_width= "60DP"
android:layout_height= "60DP"
android:layout_marginleft= "10DP"
android:background= "@drawable/white_selector"
android:text= "@string/btn_6"
Android:textsize= "20SP"
/>
<button
Android:id= "@+id/btn_plus"
Android:layout_width= "60DP"
android:layout_height= "60DP"
android:layout_marginleft= "10DP"
android:text= "@string/btn_plus"
android:background= "@drawable/white_selector"
Android:textsize= "20SP"
/>
</LinearLayout>
<linearlayout
Android:layout_width= "Fill_parent"
android:layout_height= "Wrap_content"
android:layout_margintop= "10DP"
android:orientation= "Horizontal"
Android:gravity= "Center_horizontal"
>
<linearlayout
Android:layout_width= "Wrap_content"
android:layout_height= "Wrap_content"
android:orientation= "Vertical"
>
<linearlayout
Android:layout_width= "Wrap_content"
android:layout_height= "Wrap_content"
android:orientation= "Horizontal"
>
<button
Android:id= "@+id/btn_1"
Android:layout_width= "60DP"
android:layout_height= "60DP"
android:layout_marginleft= "10DP"
android:background= "@drawable/white_selector"
android:text= "@string/btn_1"
Android:textsize= "20SP"
/>
<button
Android:id= "@+id/btn_2"
Android:layout_width= "60DP"
android:layout_height= "60DP"
android:layout_marginleft= "10DP"
android:background= "@drawable/white_selector"
android:text= "@string/btn_2"
Android:textsize= "20SP"
/>
<button
Android:id= "@+id/btn_3"
Android:layout_width= "60DP"
android:layout_height= "60DP"
android:layout_marginleft= "10DP"
android:background= "@drawable/white_selector"
android:text= "@string/btn_3"
Android:textsize= "20SP"
/>
</LinearLayout>
<linearlayout
Android:layout_width= "Wrap_content"
android:layout_height= "Wrap_content"
android:orientation= "Horizontal"
android:layout_margintop= "10DP"
>
<button
Android:id= "@+id/btn_0"
Android:layout_width= "130DP"
android:layout_height= "60DP"
android:layout_marginleft= "10DP"
android:background= "@drawable/white_selector"
android:text= "@string/btn_0"
Android:textsize= "20SP"
/>
<button
Android:id= "@+id/btn_point"
Android:layout_width= "60DP"
android:layout_height= "60DP"
android:layout_marginleft= "10DP"
android:background= "@drawable/white_selector"
android:text= "@string/btn_point"
Android:textsize= "20SP"
/>
</LinearLayout>
</LinearLayout>
<button
Android:id= "@+id/btn_equal"
Android:layout_width= "60DP"
android:layout_height= "130DP"
android:layout_marginleft= "10DP"
android:background= "@drawable/orange_selector"
android:text= "@string/btn_equal"
Android:textsize= "20SP"
/>
</LinearLayout>
</LinearLayout>
Second, the Realization of button click event
Package Com.example.calculatordemo;
Import android.app.Activity;
Import Android.os.Bundle;
Import Android.view.View;
Import Android.view.View.OnClickListener;
Import Android.widget.Button;
Import Android.widget.EditText;
public class Mainactivity extends Activity implements Onclicklistener {
Button btn_0;
Button btn_1;
Button btn_2;
Button Btn_3;
Button Btn_4;
Button btn_5;
Button Btn_6;
Button btn_7;
Button Btn_8;
Button Btn_9;
Button Btn_point;
Button btn_clear;
Button Btn_del;
Button Btn_plus;
Button Btn_minus;
Button btn_multiply;
Button Btn_divide;
Button btn_equal;
EditText Et_input;
Boolean clear_flag;//empty Flag
protected void OnCreate (Bundle savedinstancestate) {
Super.oncreate (savedinstancestate);
Setcontentview (r.layout.main_layout);
btn_0= (Button) Findviewbyid (R.ID.BTN_0);
btn_1= (Button) Findviewbyid (r.id.btn_1);
Btn_2= (Button) Findviewbyid (r.id.btn_2);
btn_3= (Button) Findviewbyid (r.id.btn_3);
btn_4= (Button) Findviewbyid (r.id.btn_4);
btn_5= (Button) Findviewbyid (r.id.btn_5);
btn_6= (Button) Findviewbyid (r.id.btn_6);
btn_7= (Button) Findviewbyid (r.id.btn_7);
btn_8= (Button) Findviewbyid (r.id.btn_8);
btn_9= (Button) Findviewbyid (r.id.btn_9);
Btn_point= (Button) Findviewbyid (r.id.btn_point);
Btn_clear= (Button) Findviewbyid (r.id.btn_clear);
Btn_del= (Button) Findviewbyid (R.id.btn_del);
Btn_plus= (Button) Findviewbyid (R.id.btn_plus);
Btn_minus= (Button) Findviewbyid (R.id.btn_minus);
Btn_multiply= (Button) Findviewbyid (r.id.btn_multiply);
Btn_divide= (Button) Findviewbyid (r.id.btn_divide);
Btn_equal= (Button) Findviewbyid (r.id.btn_equal);
The above is an instantiated button
et_input= (EditText) Findviewbyid (r.id.et_input);//instantiation of the display frequency
Btn_0.setonclicklistener (this);
Btn_1.setonclicklistener (this);
Btn_2.setonclicklistener (this);
Btn_3.setonclicklistener (this);
Btn_4.setonclicklistener (this);
Btn_5.setonclicklistener (this);
Btn_6.setonclicklistener (this);
Btn_7.setonclicklistener (this);
Btn_8.setonclicklistener (this);
Btn_9.setonclicklistener (this);
Btn_clear.setonclicklistener (this);
Btn_del.setonclicklistener (this);
Btn_plus.setonclicklistener (this);
Btn_minus.setonclicklistener (this);
Btn_multiply.setonclicklistener (this);
Btn_divide.setonclicklistener (this);
Btn_equal.setonclicklistener (this);
Btn_point.setonclicklistener (this);
That's the point. Click events to set the button
}
@Override
public void OnClick (View v) {
TODO auto-generated Method Stub
String str =et_input.gettext (). toString ();
Switch (V.getid ()) {
Case R.ID.BTN_0:
Case R.ID.BTN_1:
Case R.id.btn_2:
Case R.id.btn_3:
Case R.id.btn_4:
Case R.id.btn_5:
Case R.id.btn_6:
Case R.ID.BTN_7:
Case R.ID.BTN_8:
Case R.ID.BTN_9:
Case R.id.btn_point:
if (Clear_flag) {
Clear_flag=false;
Str= "";
Et_input.settext ("");
}
Et_input.settext (str+ (Button) v). GetText ());
Break
Case R.id.btn_plus:
Case R.id.btn_minus:
Case R.id.btn_multiply:
Case R.id.btn_divide:
if (Clear_flag) {
Clear_flag=false;
Str= "";
Et_input.settext ("");
}
Et_input.settext (str+ "" + (Button) v). GetText () + "");
Break
Case R.id.btn_clear:
if (Clear_flag) {
Clear_flag=false;
Str= "";
Et_input.settext ("");
}
Break
Case R.id.btn_del:
if (Clear_flag) {
Clear_flag=false;
Str= "";
Et_input.settext ("");
}else if (Str!=null&&!str.equals ("")) {
Et_input.settext (str.substring (0, Str.length ()-1));
}
Break
Case R.id.btn_equal:
GetResult ();
Break
}
}
private void GetResult () {
String Exp=et_input.gettext (). toString ();
if (exp==null| | Exp.equals ("")) {
Return
}
if (!exp.contains ("")) {
Return
}
if (Clear_flag) {
Clear_flag=false;
Return
}
Clear_flag=true;
Double result=0;
String s1=exp.substring (0,exp.indexof (""));//strings in front of operator
String op=exp.substring (Exp.indexof ("") +1,exp.indexof ("") +2);
String s2=exp.substring (Exp.indexof ("") +3);//strings after the operator
if (!s1.equals ("") &&!s2.equals ("")) {
Double d1=double.parsedouble (S1);
Double d2=double.parsedouble (S2);
if (op.equals ("+")) {
RESULT=D1+D2;
}else if (op.equals ("-")) {
RESULT=D1-D2;
}else if (op.equals ("x")) {
RESULT=D1*D2;
}else if (op.equals ("÷")) {
if (d2==0) {
result=0;
}else {
RESULT=D1/D2;
}
}
if (!s1.contains (".") &&!s2.contains (".") &&!op.equals ("÷")) {
int r= (int) result;
Et_input.settext (r+ "");
}else {
Et_input.settext (result+ "");
}
}else if (!s1.equals ("") &&s2.equals ("")) {
Et_input.settext (exp);
}else if (S1.equals ("") &&!s2.equals ("")) {
Double d2=double.parsedouble (S1);
if (op.equals ("+")) {
RESULT=0+D2;
}else if (op.equals ("-")) {
RESULT=0-D2;
}else if (op.equals ("x")) {
result=0;
}else if (op.equals ("÷")) {
result=0;
}
if (!s2.contains (".")) {
int r= (int) result;
Et_input.settext (r+ "");
}else {
Et_input.settext (result+ "");
}
}else {
Et_input.settext ("");
}
}
}
Android-based Simple calculator