对计算器的一些说明:
此计算器比较简陋,可以实现加减乘除这些运算,并能实现连续运算。对小数运算进行了优化了,避免了小数在计算时出现误差。
主界面:
calculator的main_activity.java;
import android.R.string; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; public class MainActivity extends Activity { TextView tv=null; private double number_one=0.0,number_two=0.0; String arithmetic1=" ",arithmetic2=" "; private Button button_zone; private Button button_one; private Button button_two; private Button button_three; private Button button_four; private Button button_five; private Button button_six; private Button button_seven; private Button button_eight; private Button button_nine; private Button button_clean; private Button button_equate; private Button button_tiny; private Button button_addition; private Button button_subtraction; private Button button_multiplication; private Button button_division; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button_zone=(Button)findViewById(R.id.But_zo); button_one=(Button)findViewById(R.id.But_on); button_two=(Button)findViewById(R.id.But_tw); button_three=(Button)findViewById(R.id.But_th); button_four=(Button)findViewById(R.id.But_fo); button_five=(Button)findViewById(R.id.But_fi); button_six=(Button)findViewById(R.id.But_si); button_seven=(Button)findViewById(R.id.But_se); button_eight=(Button)findViewById(R.id.But_ei); button_nine=(Button)findViewById(R.id.But_ni); button_equate =(Button)findViewById(R.id.But_eq); button_tiny =(Button)findViewById(R.id.But_ti); button_addition=(Button)findViewById(R.id.But_ad); button_subtraction=(Button)findViewById(R.id.But_su); button_multiplication=(Button)findViewById(R.id.But_mu); button_division=(Button)findViewById(R.id.But_di); button_clean=(Button)findViewById(R.id.But_cl); tv = (TextView)findViewById(R.id.ed_tv); button_equate.setOnClickListener (Listener); button_tiny.setOnClickListener (Listener); button_addition.setOnClickListener (Listener); button_subtraction.setOnClickListener(Listener); button_multiplication.setOnClickListener(Listener); button_division.setOnClickListener(Listener); button_five.setOnClickListener(Listener); button_five.setOnClickListener(Listener); button_zone.setOnClickListener(Listener); button_one.setOnClickListener (Listener); button_two.setOnClickListener(Listener); button_three.setOnClickListener(Listener); button_four.setOnClickListener(Listener); button_five.setOnClickListener(Listener); button_six.setOnClickListener(Listener); button_seven.setOnClickListener(Listener); button_eight.setOnClickListener(Listener); button_nine.setOnClickListener(Listener); button_clean.setOnClickListener(Listener); } public OnClickListener Listener = new OnClickListener() { public void onClick(View v) { Button btn=(Button)v; switch ( btn.getId() ) { case R.id.But_zo: if (arithmetic2.equals("=")) { clean(); } tv_changed(0); break; case R.id.But_on: if (arithmetic2.equals("=")) { clean(); } tv_changed(1); break; case R.id.But_tw: if (arithmetic2.equals("=")) { clean(); } tv_changed(2); break; case R.id.But_th: if (arithmetic2.equals("=")) { clean(); } tv_changed(3); break; case R.id.But_fo: if (arithmetic2.equals("=")) { clean(); } tv_changed(4); break; case R.id.But_fi: if (arithmetic2.equals("=")) { clean(); } tv_changed(5); break; case R.id.But_si: if (arithmetic2.equals("=")) { clean(); } tv_changed(6); break; case R.id.But_se: if (arithmetic2.equals("=")) { clean(); } tv_changed(7); break; case R.id.But_ei: if (arithmetic2.equals("=")) { clean(); } tv_changed(8); break; case R.id.But_ni: if (arithmetic2.equals("=")) { clean(); } tv_changed(9); break; case R.id.But_eq: tv_changed("="); break; case R.id.But_ad: tv_changed("+"); break; case R.id.But_mu: tv_changed("*"); break; case R.id.But_su: tv_changed("-"); break; case R.id.But_di: tv_changed("/"); break; case R.id.But_ti: tv_changed("."); break; case R.id.But_cl: tv_changed("clean"); break; default: break; } } private void tv_changed(int i) { String string = tv.getText().toString(); string += i; tv.setText(string); } private void tv_changed(String str) { if ( str.equals(".") ) { String str1 = tv.getText().toString()+"."; tv.setText(str1); } if(str.equals("clean")) { clean(); } if( str =="+"||str =="-"||str =="*"||str =="/" ) { String str1 = tv.getText().toString(); tv.setText(str1); number_one= Double.parseDouble(str1)*10000; System.out.println("numberone="+number_one); tv.setText(" "); arithmetic1 = str; System.out.println("arithmetic1="+arithmetic1); tv.setText(str); tv.setText(" "); } if (str=="=") { String str1 = tv.getText().toString(); tv.setText(str1); number_two= Double.parseDouble(str1)*10000; System.out.println("numbertwo="+number_two); tv.setText(" "); arithmetic2 = str; System.out.println("arithmetic2="+arithmetic2); tv.setText(str); arithmetic(number_one,number_two,arithmetic1); } } private void clean() { tv.setText(" "); number_two=0.0; arithmetic2=" "; System.out.println("numberone="+number_one); System.out.println("numbertwo="+number_two); } }; protected void arithmetic(double number_one2, double number_two2, String arithmetic1) { tv.setText(" "); if (arithmetic1.equals("+")) { number_one=(number_one2+ number_two2)/10000; String s = String.valueOf(number_one); tv.setText(s); } else if (arithmetic1.equals("-")) { number_one=(number_one2 - number_two2)/10000; String s1 = String.valueOf(number_one); tv.setText(s1); } else if (arithmetic1.equals("*")){ number_one=(number_one2 * number_two2)/100000000; String s2 = String.valueOf(number_one); tv.setText(s2); } else{ number_one=(number_one2 / number_two2); String s3 = String.valueOf(number_one); tv.setText(s3); } } }
布局文件:activitymain.xml
<RelativeLayout 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: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=".MainActivity" android:background="@drawable/all_bg" > <TableLayout android:layout_width="280dip" android:layout_height="80dip" android:background="@drawable/bg_box"> <EditText android:id="@+id/ed_tv" android:layout_width="280dip" android:layout_height="80dip" android:hint="@string/zone" android:textSize="35sp" > </EditText> </TableLayout> <TableRow android:layout_width="280dip" android:layout_height="60dip" android:layout_marginTop="80dip" > <Button android:id="@+id/But_cl" android:layout_width="280dip" android:layout_height="60dip" android:text="@string/clean" android:textColor="#F8F8FF" android:textSize="25sp" android:background="#404040" /> </TableRow> <TableRow android:layout_width="280dip" android:layout_height="80dip" android:layout_marginTop="140dip" > <Button android:id="@+id/But_se" android:layout_width="70dip" android:layout_height="80dip" android:background="@drawable/blankt" android:text="@string/seven" android:textColor="#F8F8FF" android:textSize="25sp" /> <Button android:id="@+id/But_ei" android:layout_width="70dip" android:layout_height="80dip" android:background="@drawable/blankt" android:text="@string/eight" android:textColor="#F8F8FF" android:textSize="25sp" /> <Button android:id="@+id/But_ni" android:layout_width="70dip" android:layout_height="80dip" android:background="@drawable/blankt" android:text="@string/nine" android:textColor="#F8F8FF" android:textSize="25sp" /> <Button android:id="@+id/But_ad" android:layout_width="70dip" android:layout_height="80dip" android:background="@drawable/blankt" android:text="@string/addition" android:textColor="#F8F8FF" android:textSize="25sp" /> </TableRow> <TableRow android:layout_width="280dip" android:layout_height="80dip" android:layout_marginTop="220dip" > <Button android:id="@+id/But_si" android:layout_width="70dip" android:layout_height="80dip" android:background="@drawable/blankt" android:text="@string/six" android:textColor="#F8F8FF" android:textSize="25sp" /> <Button android:id="@+id/But_fi" android:layout_width="70dip" android:layout_height="80dip" android:background="@drawable/blankt" android:text="@string/five" android:textColor="#F8F8FF" android:textSize="25sp" /> <Button android:id="@+id/But_fo" android:layout_width="70dip" android:layout_height="80dip" android:background="@drawable/blankt" android:text="@string/four" android:textColor="#F8F8FF" android:textSize="25sp" /> <Button android:id="@+id/But_su" android:layout_width="70dip" android:layout_height="80dip" android:background="@drawable/blankt" android:text="@string/subtraction" android:textColor="#F8F8FF" android:textSize="25sp" /> </TableRow> <TableRow android:layout_width="280dip" android:layout_height="80dip" android:layout_marginTop="300dip" > <Button android:id="@+id/But_th" android:layout_width="70dip" android:layout_height="80dip" android:background="@drawable/blankt" android:text="@string/three" android:textColor="#F8F8FF" android:textSize="25sp" /> <Button android:id="@+id/But_tw" android:layout_width="70dip" android:layout_height="80dip" android:background="@drawable/blankt" android:text="@string/two" android:textColor="#F8F8FF" android:textSize="25sp" /> <Button android:id="@+id/But_on" android:layout_width="70dip" android:layout_height="80dip" android:background="@drawable/blankt" android:text="@string/one" android:textColor="#F8F8FF" android:textSize="25sp" /> <Button android:id="@+id/But_mu" android:layout_width="70dip" android:layout_height="80dip" android:background="@drawable/blankt" android:text="@string/multiplication" android:textColor="#F8F8FF" android:textSize="25sp" /> </TableRow> <TableRow android:layout_width="280dip" android:layout_height="80dip" android:layout_marginTop="380dip" > <Button android:id="@+id/But_zo" android:layout_width="70dip" android:layout_height="80dip" android:background="@drawable/blankt" android:text="@string/zone" android:textColor="#F8F8FF" android:textSize="25sp" /> <Button android:id="@+id/But_ti" android:layout_width="70dip" android:layout_height="80dip" android:background="@drawable/blankt" android:text="@string/tiny" android:textColor="#F8F8FF" android:textSize="25sp" /> <Button android:id="@+id/But_eq" android:layout_width="70dip" android:layout_height="80dip" android:background="@drawable/blankt" android:text="@string/equate" android:textColor="#F8F8FF" android:textSize="25sp" /> 1 <Button android:id="@+id/But_di" android:layout_width="70dip" android:layout_height="80dip" android:background="@drawable/blankt" android:text="@string/division" android:textColor="#F8F8FF" android:textSize="25sp" /> </TableRow> </RelativeLayout>