最近在学习android,写了一个小calculator,与大家分享。 <?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:id="@+id/inputbox" android:layout_width="fill_parent" android:layout_height="wrap_content" android:editable="false" android:cursorVisible="false" android:digits="0123456789" android:maxLength="15" android:gravity="right" android:textSize="25dip" android:singleLine="true" android:text="@string/clear" /> <RelativeLayout android:layout_width="fill_parent" android:layout_height="wrap_content"> <Button android:id="@+id/clearbutton" android:layout_width="80px" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:textSize="25dip" android:text="C" /> </RelativeLayout> <TableLayout android:layout_width="fill_parent" android:layout_height="wrap_content"> <TableRow android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_span="4"> <Button android:id="@+id/btn_7" android:layout_width="80px" android:layout_height="wrap_content" android:textSize="25dip" android:text="7" /> <Button android:id="@+id/btn_8" android:layout_width="80px" android:layout_height="wrap_content" android:textSize="25dip" android:text="8" /> <Button android:id="@+id/btn_9" android:layout_width="80px" android:layout_height="wrap_content" android:textSize="25dip" android:text="9" /> <Button android:id="@+id/btn_div" android:layout_width="80px" android:layout_height="wrap_content" android:textSize="25dip" android:text="/" /> </TableRow> <TableRow android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_span="4"> <Button android:id="@+id/btn_4" android:layout_width="80px" android:layout_height="wrap_content" android:textSize="25dip" android:text="4" /> <Button android:id="@+id/btn_5" android:layout_width="80px" android:layout_height="wrap_content" android:textSize="25dip" android:text="5" /> <Button android:id="@+id/btn_6" android:layout_width="80px" android:layout_height="wrap_content" android:textSize="25dip" android:text="6" /> <Button android:id="@+id/btn_mul" android:layout_width="80px" android:layout_height="wrap_content" android:textSize="25dip" android:text="*" /> </TableRow> <TableRow android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_span="4"> <Button android:id="@+id/btn_1" android:layout_width="80px" android:layout_height="wrap_content" android:textSize="25dip" android:text="1" /> <Button android:id="@+id/btn_2" android:layout_width="80px" android:layout_height="wrap_content" android:textSize="25dip" android:text="2" /> <Button android:id="@+id/btn_3" android:layout_width="80px" android:layout_height="wrap_content" android:textSize="25dip" android:text="3" /> <Button android:id="@+id/btn_sub" android:layout_width="80px" android:layout_height="wrap_content" android:textSize="25dip" android:text="-" /> </TableRow> <TableRow android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_span="4"> <Button android:id="@+id/btn_point" android:layout_width="80px" android:layout_height="wrap_content" android:textSize="25dip" android:text="." /> <Button android:id="@+id/btn_0" android:layout_width="80px" android:layout_height="wrap_content" android:textSize="25dip" android:text="0" /> <Button android:id="@+id/btn_equal" android:layout_width="80px" android:layout_height="wrap_content" android:textSize="25dip" android:text="=" /> <Button android:id="@+id/btn_add" android:layout_width="80px" android:layout_height="wrap_content" android:textSize="25dip" android:text="+" /> </TableRow> </TableLayout> </LinearLayout> package com.calculator.excise; import android.app.Activity; import android.os.Bundle; import android.widget.Button; import android.widget.EditText; import android.view.View; import android.view.View.OnClickListener; public class calculator extends Activity { /** Called when the activity is first created. */ private Button[] btn=new Button[10]; private EditText inputbox; private Button btn_div,btn_mul,btn_sub,btn_add,btn_c,btn_point,btn_equal; public boolean IsBegin=true; public boolean IsPoint=false; public int numPoint=0; public double preData=0; public double lastData=0; public int signNO=0; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); 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); inputbox=(EditText)findViewById(R.id.inputbox); btn_div=(Button)findViewById(R.id.btn_div); btn_mul=(Button)findViewById(R.id.btn_mul); btn_sub=(Button)findViewById(R.id.btn_sub); btn_add=(Button)findViewById(R.id.btn_add); btn_c=(Button)findViewById(R.id.clearbutton); btn_point=(Button)findViewById(R.id.btn_point); btn_equal=(Button)findViewById(R.id.btn_equal); for(int i=0;i<10;++i){ btn[i].setOnClickListener(actionPerformed); } btn_div.setOnClickListener(actionPerformed); btn_mul.setOnClickListener(actionPerformed); btn_sub.setOnClickListener(actionPerformed); btn_add.setOnClickListener(actionPerformed); btn_c.setOnClickListener(actionPerformed); btn_point.setOnClickListener(actionPerformed); btn_equal.setOnClickListener(actionPerformed); } private OnClickListener actionPerformed = new OnClickListener(){ @Override public void onClick(View v) { // TODO Auto-generated method stub String str=inputbox.getText().toString(); if(IsBegin){ for(int i=0;i<10;++i){ if(v==btn[i]){ String ch=""+i; inputbox.setText(ch); preData=i; IsBegin=false; } } } else{ for(int j=0;j<10;++j){ if(IsPoint){ if(v==btn[j]){ inputbox.setText(str+j); ++numPoint; preData=preData+j*Math.pow(10, -numPoint); } } else{ if(v==btn[j]){ inputbox.setText(str+j); preData=preData*10+j; } } } } if(v==btn_c){ inputbox.setText("0"); preData=0; lastData=0; IsBegin=true; IsPoint=false; numPoint=0; signNO=0; } else if(v==btn_point){ inputbox.setText(str+"."); IsPoint=true; } else if(v==btn_div){ lastData=preData; IsPoint=false; IsBegin=true; numPoint=0; preData=0; signNO=0; } else if(v==btn_div){ lastData=preData; IsPoint=false; IsBegin=true; numPoint=0; preData=0; signNO=1; } else if(v==btn_mul){ lastData=preData; IsPoint=false; IsBegin=true; numPoint=0; preData=0; signNO=2; } else if(v==btn_sub){ lastData=preData; IsPoint=false; IsBegin=true; numPoint=0; preData=0; signNO=3; } else if(v==btn_add){ lastData=preData; IsPoint=false; IsBegin=true; numPoint=0; preData=0; signNO=4; } else if(v==btn_equal){ if(signNO==1){ preData=lastData/preData; } else if(signNO==2){ preData=preData*lastData; } else if(signNO==3){ preData=lastData-preData; } else if(signNO==4){ preData=preData+lastData; } String result=""+preData; inputbox.setText(result); IsPoint=false; IsBegin=true; numPoint=0; preData=0; lastData=0; signNO=0; } } }; }