對計算器的一些說明:
此計算器比較簡陋,可以實現加減乘除這些運算,並能實現連續運算。對小數運算進行了優化了,避免了小數在計算時出現誤差。
主界面:
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>