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: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" >
//为布局文件中添加如下三个TextView,具体如下
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="35dp"
android:layout_marginTop="35dp"
android:text="第一个数:" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView1"
android:layout_below="@+id/textView1"
android:layout_marginTop="40dp"
android:text="第二个数:" />
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView2"
android:layout_below="@+id/textView2"
android:layout_marginTop="44dp"
android:text=" 结 果:" />
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="35dp"
android:layout_marginTop="35dp"
android:text="第一个数:" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView1"
android:layout_below="@+id/textView1"
android:layout_marginTop="40dp"
android:text="第二个数:" />
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView2"
android:layout_below="@+id/textView2"
android:layout_marginTop="44dp"
android:text=" 结 果:" />
//为布局文件添加三个EditText,分别用来输入第一第二个数和显示计算结果
<EditText
android:id="@+id/Three"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/textView3"
android:layout_alignLeft="@+id/One"
android:layout_alignParentRight="true"
android:ems="10" />
<EditText
android:id="@+id/Two"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/textView2"
android:layout_alignBottom="@+id/textView2"
android:layout_alignLeft="@+id/One"
android:layout_alignRight="@+id/Three"
android:ems="10" />
<EditText
android:id="@+id/One"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/textView1"
android:layout_alignBottom="@+id/textView1"
android:layout_toRightOf="@+id/textView1"
android:ems="10" />
<EditText
android:id="@+id/Three"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/textView3"
android:layout_alignLeft="@+id/One"
android:layout_alignParentRight="true"
android:ems="10" />
<EditText
android:id="@+id/Two"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/textView2"
android:layout_alignBottom="@+id/textView2"
android:layout_alignLeft="@+id/One"
android:layout_alignRight="@+id/Three"
android:ems="10" />
<EditText
android:id="@+id/One"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/textView1"
android:layout_alignBottom="@+id/textView1"
android:layout_toRightOf="@+id/textView1"
android:ems="10" />
//添加四个Button按钮,分别为+,-,*,/ 控制按钮
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignRight="@+id/textView2"
android:layout_below="@+id/textView3"
android:layout_marginTop="34dp"
android:text="+" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView3"
android:layout_below="@+id/button1"
android:layout_marginTop="30dp"
android:text="-" />
<Button
android:id="@+id/button3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/button1"
android:layout_marginLeft="22dp"
android:layout_toRightOf="@+id/button2"
android:text="*" />
<Button
android:id="@+id/button4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/button2"
android:layout_alignBottom="@+id/button2"
android:layout_alignLeft="@+id/button3"
android:text="/" />
</RelativeLayout>
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignRight="@+id/textView2"
android:layout_below="@+id/textView3"
android:layout_marginTop="34dp"
android:text="+" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView3"
android:layout_below="@+id/button1"
android:layout_marginTop="30dp"
android:text="-" />
<Button
android:id="@+id/button3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/button1"
android:layout_marginLeft="22dp"
android:layout_toRightOf="@+id/button2"
android:text="*" />
<Button
android:id="@+id/button4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/button2"
android:layout_alignBottom="@+id/button2"
android:layout_alignLeft="@+id/button3"
android:text="/" />
</RelativeLayout>
在java文件中具体代码如下:
package com.manchli003;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends Activity {
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends Activity {
//定义4个Button 控件,用来加减乘除运算
private Button bn1;
private Button bn2;
private Button bn3;
private Button bn4;
//定义3个Editext 控件,用来接收输入数字并显示输出计算的结果
private EditText edit1;
private EditText edit2;
private EditText edit3;
//重写onCreate方法,此方法将为Activity创建所引用的函数
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//通过id分别获得EditText控件
edit1=(EditText)findViewById(R.id.One);
edit2=(EditText)findViewById(R.id.Two);
edit3=(EditText)findViewById(R.id.Three);
//通过id分别获得Button控件
bn1=(Button)findViewById(R.id.button1);
bn2=(Button)findViewById(R.id.button2);
bn3=(Button)findViewById(R.id.button3);
bn4=(Button)findViewById(R.id.button4);
edit1=(EditText)findViewById(R.id.One);
edit2=(EditText)findViewById(R.id.Two);
edit3=(EditText)findViewById(R.id.Three);
//通过id分别获得Button控件
bn1=(Button)findViewById(R.id.button1);
bn2=(Button)findViewById(R.id.button2);
bn3=(Button)findViewById(R.id.button3);
bn4=(Button)findViewById(R.id.button4);
//绑定每个Button控件监听器
bn1.setOnClickListener(new addListener());
bn2.setOnClickListener(new reduceListener());
bn3.setOnClickListener(new multiplyListener());
bn4.setOnClickListener(new divisionListener());
}
//创建每个Butoon的监听器
class addListener implements OnClickListener{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//获取Editext 控件中输入的值
double number1=Double.parseDouble(edit1.getText().toString());
double number2=Double.parseDouble(edit2.getText().toString());
double number=number1+number2;
edit3.setText(""+number);
}
}
class reduceListener implements OnClickListener{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
double number1=Double.parseDouble(edit1.getText().toString());
double number2=Double.parseDouble(edit2.getText().toString());
double number=number1-number2;
edit3.setText(""+number);
}
}
class multiplyListener implements OnClickListener{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
double number1=Double.parseDouble(edit1.getText().toString());
double number2=Double.parseDouble(edit2.getText().toString());
double number=number1*number2;
edit3.setText(""+number);
}
}
class divisionListener implements OnClickListener{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
double number1=Double.parseDouble(edit1.getText().toString());
double number2=Double.parseDouble(edit2.getText().toString());
double number=number1/number2;
edit3.setText(""+number);
}
}
}
注意:此计算器要输入两个数后在按所要的计算运算符
double number1=Double.parseDouble(edit1.getText().toString());
double number2=Double.parseDouble(edit2.getText().toString());
double number=number1+number2;
edit3.setText(""+number);
}
}
class reduceListener implements OnClickListener{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
double number1=Double.parseDouble(edit1.getText().toString());
double number2=Double.parseDouble(edit2.getText().toString());
double number=number1-number2;
edit3.setText(""+number);
}
}
class multiplyListener implements OnClickListener{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
double number1=Double.parseDouble(edit1.getText().toString());
double number2=Double.parseDouble(edit2.getText().toString());
double number=number1*number2;
edit3.setText(""+number);
}
}
class divisionListener implements OnClickListener{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
double number1=Double.parseDouble(edit1.getText().toString());
double number2=Double.parseDouble(edit2.getText().toString());
double number=number1/number2;
edit3.setText(""+number);
}
}
}
注意:此计算器要输入两个数后在按所要的计算运算符
在虚拟中运行得到如下界面:
在测试中发现无法计算无法计算带小数点的数值,当输入带小数点的数时,运行出错,程序关闭,其他输入的整数计算都没有发现问题。此出错问题有待更一步的探讨。
上面问题已经解决,解决该问题把原来代码Integer.parseInt改为代码中红色的代码
在学习的过程中我还尝试用线性布局来做,但由于个人水平,做出来布局界面非常乱,面目全非,图如下:
总结:
要考虑布局,善用布局管理器,这样效率会更高,效果也会更好。