第一个安卓app——计算器
Posted XiaoGao128
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第一个安卓app——计算器相关的知识,希望对你有一定的参考价值。
几天前,我花了一天时间,结合这段时间所学知识开发出了一个简单的计算器,它由两个TextView和23个Button组成,代码会放在文章结尾。
TextView
TextView:上面一个TextView的功能是记录运算过程,其中运算符的显示顺序是输入顺序也是运算顺序/*即1+2×3为(1+2)×3*/,
下面一个TextView功能是显示运算结果和显示输入的运算数据。
Button
AC键:功能是清除运算记录,将所有变量重置。
BC键:功能是返回上一步运算结果,在每一步运算结束后,会将这一步的运算结果存储在ArrayList中,BC之后会将Arraylist中最近一次的运算记录也就是返回的这步运算记录删除,以实现随意回调的效果。
+/-键:功能是将现在输入框中的数据转为它的相反数
DEL键:功能是退格,在输入数据不是小数时,退格的实现方式是输入框中数据除十得到结果,在输入数据是小数时退格的实现方式是获取输入框中的字符串减去末尾数字字符得到结果。
0~9数字键:进行数字键输入操作时,会对当前是否正在输入小数进行判断,如果是,则这样将
double num = 1;
pointnum++;//小数点后输入的位数
for (int i = 0; i < pointnum; i++)
num /= 10;
init += key* num;//当前key的值*位数
的确是繁琐!
推荐第二种做法直接将key拼接到输入框字符串的尾部即可!
四则运算键:在四则运算前都会对前一个输入是否为其他四则运算符进行判断。如果是,则将前一个四则运算符替换为当前的。进行每一个运算符在被点击之后都会储存起来,在下一个运算符或等于键被点击时(即下一个需要运算的数据输入完毕时)进行运算,并将此时被点击的运算符存储起来以供下次运算使用。
%键:进行求余运算,与四则运算类似。
x²键:对当前输入框中的数据进行平方操作。
√x键:对当前输入框中的数据进行开平方操作。
小数点键:将当前输入状态设置为小数输入。
关于这个程序的反省:
*在这个程序中我对输入框中的输入等操作大多是以double数据的运算实现的,在写完之后我突然意识到其实输入等很多功能的实现用字符串操作会省很多功夫,像DEL退格的实现以及小数点的等等操作用字符串进行操作确实会容易很多,不需要做那么多运算,在用的时候直接把字符串转换为所需数据类型即可!
*关于界面布局的看法:
在刚开始写这个程序布局的时候我只用了一个RelativeLayout就写了下来,在虚拟机上看起来布局很好,但放到其他型号的手机里布局就不行了,今天我对它的布局做了优化,用的是一个大的LinearLayout里面框住两个文本框和一个小的LinearLayout框住五个更小的LinearLayout,然后为他们各自设置match_parent和layout_weight,五个更小的LinearLayout每个各占match_parent/5,在更小的的LinearLayout里为里面的键设置layoutweight,避免了直接使用dp等数字,保证它可以占满整个屏幕或者确定的那一部分,使之在其他机型上也能美观地展示。
activity_calculator.xml
1 <?xml version="1.0" encoding="utf-8"?> 2 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 xmlns:tools="http://schemas.android.com/tools" 4 android:layout_width="match_parent" 5 android:layout_height="match_parent" 6 tools:context="com.Appalication_Trial.Calculator"> 7 8 <TextView 9 android:id="@+id/tv_cord" 10 android:layout_width="match_parent" 11 android:layout_height="99dp" 12 android:background="@drawable/riple_btn_pink" 13 android:gravity="right" 14 android:textSize="30dp"></TextView> 15 16 <TextView 17 android:id="@+id/tv_calcul" 18 android:layout_width="match_parent" 19 android:layout_height="99dp" 20 android:layout_below="@+id/tv_cord" 21 android:background="@drawable/riple_btn_pink" 22 android:gravity="right" 23 android:textSize="30dp"></TextView> 24 <LinearLayout 25 android:layout_width="match_parent" 26 android:layout_height="match_parent" 27 android:layout_below="@id/tv_calcul" 28 android:orientation="vertical" 29 android:gravity="center"> 30 <LinearLayout 31 android:layout_width="match_parent" 32 android:layout_height="0dp" 33 android:layout_weight="1" 34 android:orientation="horizontal" 35 ><Button 36 android:id="@+id/calcul_btn_ac" 37 android:layout_width="70dp" 38 android:layout_height="match_parent" 39 android:layout_marginTop="0dp" 40 android:background="@drawable/riple_btn_nocorner" 41 android:fontFamily="宋体" 42 android:text="AC" 43 android:textSize="40dp" 44 android:layout_weight="1" 45 android:textColor="#169FDF" 46 ></Button> 47 <Button 48 android:id="@+id/calcul_btn_back" 49 android:layout_width="70dp" 50 android:layout_height="match_parent" 51 android:layout_marginTop="0dp" 52 android:layout_toRightOf="@id/calcul_btn_ac" 53 android:background="@drawable/riple_btn_nocorner" 54 android:fontFamily="宋体" 55 android:text="bc" 56 android:textColor="#169FDF" 57 android:layout_weight="1" 58 android:textSize="40dp"></Button> 59 <Button 60 android:id="@+id/calcul_btn_neg" 61 android:layout_width="70dp" 62 android:layout_height="match_parent" 63 android:layout_marginTop="0dp" 64 android:background="@drawable/riple_btn_nocorner" 65 android:text="+/-" 66 android:textSize="40dp" 67 android:textColor="#169FDF" 68 android:layout_weight="1" 69 android:fontFamily="宋体"></Button> 70 <Button 71 android:id="@+id/calcul_btn_del" 72 android:layout_width="140dp" 73 android:layout_height="match_parent" 74 android:layout_marginTop="0dp" 75 android:background="@drawable/riple_btn_nocorner" 76 android:text="del" 77 android:textSize="30dp" 78 android:textColor="#169FDF" 79 android:layout_weight="2" 80 android:fontFamily="宋体"></Button> 81 82 </LinearLayout> 83 <LinearLayout 84 android:layout_width="match_parent" 85 android:layout_weight="1" 86 android:layout_height="0dp" 87 android:orientation="horizontal" 88 > 89 <Button 90 android:id="@+id/calcul_btn_1" 91 android:layout_width="70dp" 92 android:layout_height="match_parent" 93 android:layout_marginTop="0dp" 94 android:background="@drawable/riple_btn_nocorner" 95 android:fontFamily="宋体" 96 android:text="1" 97 android:layout_weight="1" 98 android:textColor="#169FDF" 99 android:textSize="40dp"></Button> 100 <Button 101 android:id="@+id/calcul_btn_2" 102 android:layout_width="70dp" 103 android:layout_height="match_parent" 104 android:layout_marginTop="0dp" 105 android:background="@drawable/riple_btn_nocorner" 106 android:text="2" 107 android:layout_weight="1" 108 android:textSize="40dp" 109 android:textColor="#169FDF" 110 android:fontFamily="宋体"></Button> 111 <Button 112 android:id="@+id/calcul_btn_3" 113 android:layout_width="70dp" 114 android:layout_height="match_parent" 115 android:layout_marginTop="0dp" 116 android:background="@drawable/riple_btn_nocorner" 117 android:text="3" 118 android:textSize="40dp" 119 android:textColor="#169FDF" 120 android:layout_weight="1" 121 android:fontFamily="宋体"></Button> 122 <Button 123 android:id="@+id/calcul_btn_pf" 124 android:layout_width="70dp" 125 android:layout_height="match_parent" 126 android:layout_below="@id/calcul_btn_back" 127 android:layout_marginTop="0dp" 128 android:layout_toRightOf="@id/calcul_btn_9" 129 android:background="@drawable/riple_btn_nocorner" 130 android:text="x²" 131 android:textAllCaps="false" 132 android:textSize="30dp" 133 android:textColor="#169FDF" 134 android:layout_weight="1" 135 android:fontFamily="宋体"></Button> 136 <Button 137 android:id="@+id/calcul_btn_sqrt" 138 android:layout_width="70dp" 139 android:layout_height="match_parent" 140 android:layout_below="@id/calcul_btn_back" 141 android:layout_marginTop="0dp" 142 android:layout_toRightOf="@id/calcul_btn_pf" 143 android:background="@drawable/riple_btn_nocorner" 144 android:text="√x" 145 android:textAllCaps="false" 146 android:textSize="30dp" 147 android:textColor="#169FDF" 148 android:layout_weight="1" 149 android:fontFamily="宋体"></Button> 150 151 </LinearLayout> 152 <LinearLayout 153 android:layout_width="match_parent" 154 android:layout_weight="1" 155 android:layout_height="0dp" 156 android:orientation="horizontal" 157 > 158 <Button 159 android:id="@+id/calcul_btn_4" 160 android:layout_width="70dp" 161 android:layout_height="match_parent" 162 android:layout_marginTop="0dp" 163 android:background="@drawable/riple_btn_nocorner" 164 android:text="4" 165 android:textSize="40dp" 166 android:layout_weight="1" 167 android:textColor="#169FDF" 168 android:fontFamily="宋体"></Button> 169 <Button 170 android:id="@+id/calcul_btn_5" 171 android:layout_width="70dp" 172 android:layout_height="match_parent" 173 android:layout_marginTop="0dp" 174 android:background="@drawable/riple_btn_nocorner" 175 android:text="5" 176 android:textSize="40dp" 177 android:textColor="#169FDF" 178 android:layout_weight="1" 179 android:fontFamily="宋体"></Button> 180 <Button 181 android:id="@+id/calcul_btn_6" 182 android:layout_width="70dp" 183 android:layout_height="match_parent" 184 android:layout_marginTop="0dp" 185 android:background="@drawable/riple_btn_nocorner" 186 android:text="6" 187 android:textSize="40dp" 188 android:textColor="#169FDF" 189 android:layout_weight="1" 190 android:fontFamily="宋体"></Button> 191 <Button 192 android:id="@+id/calcul_btn_add" 193 android:layout_width="70dp" 194 android:layout_height="match_parent" 195 android:layout_marginTop="0dp" 196 android:background="@drawable/riple_btn_nocorner" 197 android:text="+" 198 android:textSize="40dp" 199 android:textColor="#169FDF" 200 android:fontFamily="宋体" 201 android:layout_weight="1" 202 ></Button> 203 <Button 204 android:id="@+id/calcul_btn_multiply" 205 android:layout_width="70dp" 206 android:layout_height="match_parent" 207 android:layout_weight="1" 208 android:layout_marginTop="0dp" 209 android:background="@drawable/riple_btn_nocorner" 210 android:text="×" 211 android:textSize="40dp" 212 android:textColor="#169FDF" 213 android:fontFamily="宋体"></Button></LinearLayout> 214 <LinearLayout 215 android:layout_width="match_parent" 216 android:layout_weight="1" 217 android:layout_height="0dp" 218 android:orientation="horizontal" 219 > 220 221 <Button 222 android:id="@+id/calcul_btn_7" 223 android:layout_width="70dp" 224 android:layout_height="match_parent" 225 android:layout_below="@id/calcul_btn_4" 226 android:layout_marginTop="0dp" 227 android:layout_toLeftOf="@id/calcul_btn_5" 228 android:background="@drawable/riple_btn_nocorner" 229 android:text="7" 230 android:textSize="40dp" 231 android:layout_weight="1" 232 android:textColor="#169FDF" 233 android:fontFamily="宋体"></Button> 234 <Button 235 android:id="@+id/calcul_btn_8" 236 android:layout_width="70dp" 237 android:layout_height="match_parent" 238 android:layout_below="@id/calcul_btn_5" 239 android:layout_marginTop="0dp" 240 android:layout_toRightOf="@id/calcul_btn_7" 241 android:background="@drawable/riple_btn_nocorner" 242 android:text="8" 243 android:layout_weight="1" 244 android:textSize="40dp" 245 android:textColor="#169FDF" 246 android:fontFamily="宋体"></Button> 247 <Button 248 android:id="@+id/calcul_btn_9" 249 android:layout_width="70dp" 250 android:layout_height="match_parent" 251 android:layout_below="@id/calcul_btn_6" 252 android:layout_marginTop="0dp" 253 android:layout_toRightOf="@id/calcul_btn_8" 254 android:background="@drawable/riple_btn_nocorner" 255 android:text="9" 256 android:layout_weight="1" 257 android:textColor="#169FDF" 258 android:textSize="40dp" 259 android:fontFamily="宋体"></Button> 260 <Button 261 android:id="@+id/calcul_btn_sub" 262 android:layout_width="70dp" 263 android:layout_height="match_parent" 264 android:layout_marginTop="0dp" 265 android:background="@drawable/riple_btn_nocorner" 266 android:text="-" 267 android:textSize="40dp" 268 android:textColor="#169FDF" 269 android:layout_weight="1" 270 android:fontFamily="宋体"></Button> 271 <Button 272 android:id="@+id/calcul_btn_divide" 273 android:layout_width="70dp" 274 android:layout_height="match_parent" 275 android:layout_marginTop="0dp" 276 android:background="@drawable/riple_btn_nocorner" 277 android:layout_weight="1" 278 android:text="÷" 279 android:textSize="40dp" 280 android:textColor="#169FDF" 281 android:fontFamily="宋体"></Button> 282 </LinearLayout> 283 <LinearLayout 284 android:layout_width="match_parent" 285 android:layout_weight="1" 286 android:layout_height="0dp" 287 android:orientation="horizontal" 288 > 289 <Button 290 android:id="@+id/calcul_btn_rem" 使用 onBackPressed 仅从第一个片段退出 App