计算器是我们生活中常见的一个工具,今天我们就使用Android中一些简单的控件来完成一个计算器。首先看一下效果:
布局部分:
1,计算器一共分为5行,第一行是显示框,剩下的四行是数字和符号。
2,这个布局很简单,可以使用linearlayout来完成,最外层视图方向使用android:orientation=”vertical”,每行之间使用android:orientation=”horizontal”,按钮使用Button来填充。
下面是主要的布局部分
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingTop="5dip" >
android:id="@+id/Button07"
android:layout_width="80dip"
android:layout_height="wrap_content"
android:text="7"
android:textSize="25sp" />
android:id="@+id/Button08"
android:layout_width="80dip"
android:layout_height="wrap_content"
android:text="8"
android:textSize="25sp" />
android:id="@+id/Button09"
android:layout_width="80dip"
android:layout_height="wrap_content"
android:text="9"
android:textSize="25sp" />
android:id="@+id/ButtonJia"
android:layout_width="80dip"
android:layout_height="wrap_content"
android:text="+"
android:textSize="25sp" />
代码实现:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main); // 跳转到main界面
initButton();
// 清空按钮的点击事件监听器
buttonC.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
str1 = "";
str2 = ""; // 清空记录
tv.setText(str1);
flag = 0;
}
});
// 监听
for (int i = 0; i < buttons.length; i++) {
temp = (Button) findViewById(buttons[i]);
temp.setOnClickListener( // 为Button添加监听器
new OnClickListener() {
@Override
public void onClick(View v) {
str1 = tv.getText().toString().trim();
str1 = str1 + String.valueOf(((Button) v).getText());// 获得新输入的值
System.out.println("str1" + ":::" + str1);
tv.setText(str1);
}
});
}
buttonListener(buttonJia, 1);
buttonListener(buttonJian, 2);
buttonListener(buttonCheng, 3);
buttonListener(buttonChu, 4);
buttonDengyu.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
System.out.println(str1);
result1 = Integer.parseInt(str1);
if (flag == 1) {
result = result0 + result1;
System.out.println(result0 + ":" + result1);
} else if (flag == 2) {
result = result0 - result1;
} else if (flag == 3) {
result = result0 * result1;
} else if (flag == 4) {
result = (int) (result0 / result1);
}
String str = (result + "").trim();
System.out.println(str);
tv.setText(str);
}
});
}
// 初始化按钮
public void initButton() { // 初始化控件资源
tv = (TextView) this.findViewById(R.id.tv); // 获取文本框控件对象
str1 = String.valueOf(tv.getText());
str2 = ""; // 初始化运算输入数值
buttonC = (Button) this.findViewById(R.id.ButtonC); // 获得计算按钮的按钮对象
buttonJia = (Button) this.findViewById(R.id.ButtonJia);
buttonJian = (Button) this.findViewById(R.id.ButtonJian);
buttonCheng = (Button) this.findViewById(R.id.ButtonCheng);
buttonChu = (Button) this.findViewById(R.id.ButtonChu);
buttonDengyu = (Button) this.findViewById(R.id.ButtonDengyu);
buttons = new int[] { // 记录数值按钮的id
R.id.Button00, R.id.Button01, R.id.Button02, R.id.Button03,
R.id.Button04, R.id.Button05, R.id.Button06, R.id.Button07,
R.id.Button08, R.id.Button09 };
}
// 按钮监听
public void buttonListener(Button button, final int id) {
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String str = tv.getText().toString().trim();
result0 = Integer.parseInt(str);
tv.setText("");
flag = id;
}
});
}
源码下载:点击下载