android简易计算器的实现

时间:2023-01-09 21:28:13

最近接触了android开发就试着写了一个计算器的小程序:

android简易计算器的实现

 

在xml文件中的布局代码如下:

  1 <?xml version="1.0" encoding="utf-8"?>
2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 xmlns:tools="http://schemas.android.com/tools"
4 android:id="@+id/activity_ji_suan02"
5 android:layout_width="match_parent"
6 android:layout_height="match_parent"
7 android:orientation="vertical"
8 tools:context="com.example.whs.sample01_1_activity.JiSuanActivity02">
9
10 <TextView
11 android:id="@+id/tv"
12 android:layout_width="match_parent"
13 android:layout_height="40dp"
14 android:textSize="30dp"
15 android:text="0"
16 android:textColor="#ff0000"
17 android:gravity="center_vertical|right"
18 android:layout_marginRight="5dp"
19 android:layout_marginLeft="5dp"
20 android:background="#FFFF00"
21 />
22 <!--7 8 9 + -->
23 <LinearLayout
24 android:layout_width="match_parent"
25 android:layout_height="wrap_content"
26 android:paddingTop="5dp"
27 android:orientation="horizontal"
28 >
29
30 <Button
31 android:id="@+id/Button07"
32 android:text="7"
33 android:textSize="25dp"
34 android:layout_width="80dp"
35 android:layout_height="wrap_content" />
36 <Button
37 android:id="@+id/Button08"
38 android:text="8"
39 android:textSize="25dp"
40 android:layout_width="80dp"
41 android:layout_height="wrap_content" />
42 <Button
43 android:id="@+id/Button09"
44 android:text="9"
45 android:textSize="25dp"
46 android:layout_width="80dp"
47 android:layout_height="wrap_content" />
48 <Button
49 android:id="@+id/ButtonJia"
50 android:text="+"
51 android:textSize="25dp"
52 android:layout_width="80dp"
53 android:layout_height="wrap_content" />
54
55 </LinearLayout>
56
57 <!--4 5 6 - -->
58 <LinearLayout
59 android:layout_width="match_parent"
60 android:layout_height="wrap_content"
61 android:paddingTop="5dp"
62 android:orientation="horizontal"
63 >
64
65 <Button
66 android:id="@+id/Button04"
67 android:text="4"
68 android:textSize="25dp"
69 android:layout_width="80dp"
70 android:layout_height="wrap_content" />
71 <Button
72 android:id="@+id/Button05"
73 android:text="5"
74 android:textSize="25dp"
75 android:layout_width="80dp"
76 android:layout_height="wrap_content" />
77 <Button
78 android:id="@+id/Button06"
79 android:text="6"
80 android:textSize="25dp"
81 android:layout_width="80dp"
82 android:layout_height="wrap_content" />
83 <Button
84 android:id="@+id/ButtonJian"
85 android:text="-"
86 android:textSize="25dp"
87 android:layout_width="80dp"
88 android:layout_height="wrap_content" />
89
90 </LinearLayout>
91
92 <!--1 2 3 * -->
93 <LinearLayout
94 android:layout_width="match_parent"
95 android:layout_height="wrap_content"
96 android:paddingTop="5dp"
97 android:orientation="horizontal"
98 >
99
100 <Button
101 android:id="@+id/Button01"
102 android:text="1"
103 android:textSize="25dp"
104 android:layout_width="80dp"
105 android:layout_height="wrap_content" />
106 <Button
107 android:id="@+id/Button02"
108 android:text="2"
109 android:textSize="25dp"
110 android:layout_width="80dp"
111 android:layout_height="wrap_content" />
112 <Button
113 android:id="@+id/Button03"
114 android:text="3"
115 android:textSize="25dp"
116 android:layout_width="80dp"
117 android:layout_height="wrap_content" />
118 <Button
119 android:id="@+id/ButtonCheng"
120 android:text="*"
121 android:textSize="25dp"
122 android:layout_width="80dp"
123 android:layout_height="wrap_content" />
124
125 </LinearLayout>
126
127 <!--0 C = / -->
128 <LinearLayout
129 android:layout_width="match_parent"
130 android:layout_height="wrap_content"
131 android:paddingTop="5dp"
132 android:orientation="horizontal"
133 >
134
135 <Button
136 android:id="@+id/Button00"
137 android:text="0"
138 android:textSize="25dp"
139 android:layout_width="80dp"
140 android:layout_height="wrap_content" />
141 <Button
142 android:id="@+id/ButtonC"
143 android:text="C"
144 android:textSize="25dp"
145 android:layout_width="80dp"
146 android:layout_height="wrap_content" />
147 <Button
148 android:id="@+id/ButtonDeng"
149 android:text="="
150 android:textSize="25dp"
151 android:layout_width="80dp"
152 android:layout_height="wrap_content" />
153 <Button
154 android:id="@+id/ButtonChu"
155 android:text="/"
156 android:textSize="25dp"
157 android:layout_width="80dp"
158 android:layout_height="wrap_content" />
159
160 </LinearLayout>
161
162
163
164
165
166 </LinearLayout>

在activity中实现具体的功能

  1 package com.example.whs.sample01_1_activity;
2
3 import android.provider.Settings;
4 import android.support.v7.app.AppCompatActivity;
5 import android.os.Bundle;
6 import android.view.View;
7 import android.widget.Button;
8 import android.widget.TextView;
9 import android.widget.Toast;
10
11 public class JiSuanActivity02 extends AppCompatActivity {
12
13 TextView tv;
14 int[] buttons; //数字按钮数组
15 int result;
16 int result0;
17 int result1;
18
19 //按钮对象声明
20 Button buttonC;
21 Button buttonJia;
22 Button buttonJian;
23 Button buttonCheng;
24 Button buttonChu;
25 Button buttonDengyu;
26
27 String str1; //旧输入的值
28 String str2; //新输入的值
29
30 int flag=0; //计算标志位,0第一次输入;1加; 2减; 3乘; 4除; 5等于
31 Button temp;
32
33 @Override
34 protected void onCreate(Bundle savedInstanceState) {
35 super.onCreate(savedInstanceState);
36 setContentView(R.layout.activity_ji_suan02);
37
38 initButton();
39 //清空按钮点击事件
40 buttonC.setOnClickListener(new View.OnClickListener() {
41 @Override
42 public void onClick(View view) {
43 str1 = "";
44 str2 = "";
45 tv.setText("0");
46 result = 0;
47 result1 = 0;
48 result0 = 0;
49 flag = 0;
50 }
51 });
52
53 //监听
54 for (int i = 0; i < buttons.length; i++){
55 temp = getBtnForId(buttons[i]);
56 temp.setOnClickListener(new View.OnClickListener() {
57 @Override
58 public void onClick(View view) {
59 if (flag != 0){
60 str1 = "";
61 }else {
62 str1 = tv.getText().toString().trim();
63 if (str1.equals("0")){
64 str1 = "";
65 }
66 }
67
68 str1 = str1 + String.valueOf(((Button)view).getText()); //获取新值
69 tv.setText(str1);
70 }
71 });
72 }
73
74 buttonListener(buttonJia, 1);
75 buttonListener(buttonJian, 2);
76 buttonListener(buttonCheng, 3);
77 buttonListener(buttonChu, 4);
78
79 buttonDengyu.setOnClickListener(new View.OnClickListener() {
80 @Override
81 public void onClick(View view) {
82
83 result1 = Integer.parseInt(str1);
84
85 if (flag == 1){
86 result = result0 + result1;
87 }else if (flag == 2){
88 result = result0 - result1;
89 }else if (flag == 3){
90 result = result0 * result1;
91 }else if (flag == 4){
92 if (result1 == 0){
93 Toast.makeText(JiSuanActivity02.this, "除数不能为0", Toast.LENGTH_SHORT).show();
94 }else {
95 result = result0 / result1;
96 }
97
98 }else if (flag == 0){
99 result = result1;
100 }
101 String str = (result + "").trim();
102
103 if (result1 == 0 && flag == 4){
104 str = "错误";
105 }
106 tv.setText(str);
107 Toast.makeText(JiSuanActivity02.this, "结果是:" + result, Toast.LENGTH_SHORT).show();
108 }
109 });
110 }
111
112 //初始化控件资源
113 public void initButton(){
114 tv = (TextView)this.findViewById(R.id.tv);
115 str1 = String.valueOf(tv.getText());
116 str2 = "";
117 buttonC = getBtnForId(R.id.ButtonC);
118 buttonJia = getBtnForId(R.id.ButtonJia);
119 buttonJian = getBtnForId(R.id.ButtonJian);
120 buttonCheng = getBtnForId(R.id.ButtonCheng);
121 buttonChu = getBtnForId(R.id.ButtonChu);
122 buttonDengyu = getBtnForId(R.id.ButtonDeng);
123
124 buttons = new int[]{
125 R.id.Button00,R.id.Button01,R.id.Button02,
126 R.id.Button03,
127 R.id.Button04,R.id.Button05,R.id.Button06,
128 R.id.Button07,R.id.Button08,R.id.Button09
129 };
130 }
131 //根据id获取Button
132 public Button getBtnForId(int rID){
133 Button btn = (Button)this.findViewById(rID);
134 return btn;
135 }
136 //按钮监听
137 public void buttonListener(Button button, final int id){
138 button.setOnClickListener(new View.OnClickListener() {
139 @Override
140 public void onClick(View view) {
141 String str = tv.getText().toString().trim();
142 result0 = Integer.parseInt(str);
143 //tv.setText("");
144 flag = id;
145 }
146 });
147 }
148 }