当前位置:   article > 正文

Android studio制作计算器源代码_android 计算器代码实现

android 计算器代码实现

版权声明:本文为博主原创文章,未经博主允许不得转载。https://mp.csdn.net/postedit/82623704

 

一、Android studio制作计算器源代码

这是我学Android 以来第一次制作计算器,Android学起来说难也不难,说简单也不简单

制作简易的计算器需要掌握基本布局,监听器,以及使用哪些主题等

废话不多说,直接上代码!

以下是activity_main.xml代码

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. xmlns:app="http://schemas.android.com/apk/res-auto"
  4. xmlns:tools="http://schemas.android.com/tools"
  5. android:layout_width="match_parent"
  6. android:layout_height="match_parent"
  7. android:orientation="vertical"
  8. tools:context=".MainActivity">
  9. <EditText
  10. android:id="@+id/et_input"
  11. android:layout_width="match_parent"
  12. android:layout_height="60dp"
  13. android:paddingBottom="5dp"
  14. android:paddingRight="5dp"
  15. android:textSize="50sp" />
  16. <LinearLayout
  17. android:layout_width="fill_parent"
  18. android:layout_height="wrap_content"
  19. android:layout_marginTop="30dp"
  20. android:orientation="horizontal"
  21. android:gravity="center_horizontal">
  22. <Button
  23. android:id="@+id/btn_clr"
  24. android:layout_width="80dp"
  25. android:layout_height="80dp"
  26. android:text="C"
  27. android:textSize="30sp"
  28. android:paddingRight="15sp"
  29. android:paddingBottom="15sp"/>
  30. <Button
  31. android:id="@+id/btn_del"
  32. android:layout_width="80dp"
  33. android:layout_height="80dp"
  34. android:text="D"
  35. android:textSize="30sp"
  36. android:layout_marginLeft="10dp"
  37. android:paddingRight="15sp"
  38. android:paddingBottom="15sp" />
  39. <Button
  40. android:id="@+id/btn_div"
  41. android:layout_width="80dp"
  42. android:layout_height="80dp"
  43. android:text="÷"
  44. android:textSize="30sp"
  45. android:layout_marginLeft="10dp"
  46. android:paddingRight="15sp"
  47. android:paddingBottom="15sp" />
  48. <Button
  49. android:id="@+id/btn_mul"
  50. android:layout_width="80dp"
  51. android:layout_height="80dp"
  52. android:text="×"
  53. android:textSize="30sp"
  54. android:layout_marginLeft="10dp"
  55. android:paddingRight="15sp"
  56. android:paddingBottom="15sp"
  57. />
  58. </LinearLayout>
  59. <LinearLayout
  60. android:layout_width="fill_parent"
  61. android:layout_height="wrap_content"
  62. android:layout_marginTop="10dp"
  63. android:orientation="horizontal"
  64. android:gravity="center_horizontal"
  65. >
  66. <Button
  67. android:id="@+id/btn_7"
  68. android:layout_width="80dp"
  69. android:layout_height="80dp"
  70. android:text="7"
  71. android:textSize="30sp"
  72. android:paddingRight="15sp"
  73. android:paddingBottom="15sp"
  74. />
  75. <Button
  76. android:id="@+id/btn_8"
  77. android:layout_width="80dp"
  78. android:layout_height="80dp"
  79. android:text="8"
  80. android:textSize="30sp"
  81. android:layout_marginLeft="10dp"
  82. android:paddingRight="15sp"
  83. android:paddingBottom="15sp"
  84. />
  85. <Button
  86. android:id="@+id/btn_9"
  87. android:layout_width="80dp"
  88. android:layout_height="80dp"
  89. android:text="9"
  90. android:textSize="30sp"
  91. android:layout_marginLeft="10dp"
  92. android:paddingRight="15sp"
  93. android:paddingBottom="15sp"
  94. />
  95. <Button
  96. android:id="@+id/btn_sub"
  97. android:layout_width="80dp"
  98. android:layout_height="80dp"
  99. android:text="-"
  100. android:textSize="30sp"
  101. android:layout_marginLeft="10dp"
  102. android:paddingRight="15sp"
  103. android:paddingBottom="15sp"
  104. />
  105. </LinearLayout>
  106. <LinearLayout
  107. android:layout_width="fill_parent"
  108. android:layout_height="wrap_content"
  109. android:layout_marginTop="10dp"
  110. android:orientation="horizontal"
  111. android:gravity="center_horizontal"
  112. >
  113. <Button
  114. android:id="@+id/btn_4"
  115. android:layout_width="80dp"
  116. android:layout_height="80dp"
  117. android:text="4"
  118. android:textSize="30sp"
  119. android:paddingRight="15sp"
  120. android:paddingBottom="15sp"
  121. />
  122. <Button
  123. android:id="@+id/btn_5"
  124. android:layout_width="80dp"
  125. android:layout_height="80dp"
  126. android:text="5"
  127. android:textSize="30sp"
  128. android:layout_marginLeft="10dp"
  129. android:paddingRight="15sp"
  130. android:paddingBottom="15sp"
  131. />
  132. <Button
  133. android:id="@+id/btn_6"
  134. android:layout_width="80dp"
  135. android:layout_height="80dp"
  136. android:text="6"
  137. android:textSize="30sp"
  138. android:layout_marginLeft="10dp"
  139. android:paddingRight="15sp"
  140. android:paddingBottom="15sp"
  141. />
  142. <Button
  143. android:id="@+id/btn_add"
  144. android:layout_width="80dp"
  145. android:layout_height="80dp"
  146. android:text="+"
  147. android:textSize="30sp"
  148. android:layout_marginLeft="10dp"
  149. android:paddingRight="15sp"
  150. android:paddingBottom="15sp"
  151. />
  152. </LinearLayout>
  153. <LinearLayout
  154. android:layout_width="fill_parent"
  155. android:layout_height="wrap_content"
  156. android:orientation="horizontal"
  157. android:layout_marginTop="10dp"
  158. android:gravity="center_horizontal">
  159. <LinearLayout
  160. android:layout_width="wrap_content"
  161. android:layout_height="wrap_content"
  162. android:orientation="vertical"
  163. >
  164. <LinearLayout
  165. android:layout_width="wrap_content"
  166. android:layout_height="wrap_content"
  167. android:orientation="horizontal"
  168. >
  169. <Button
  170. android:layout_width="80dp"
  171. android:layout_height="80dp"
  172. android:id="@+id/btn_1"
  173. android:text="1"
  174. android:textSize="30sp"
  175. android:paddingRight="15sp"
  176. android:paddingBottom="15sp"
  177. />
  178. <Button
  179. android:layout_width="80dp"
  180. android:layout_height="80dp"
  181. android:id="@+id/btn_2"
  182. android:text="2"
  183. android:textSize="30sp"
  184. android:layout_marginLeft="10dp"
  185. android:paddingRight="15sp"
  186. android:paddingBottom="15sp"
  187. />
  188. <Button
  189. android:layout_width="80dp"
  190. android:layout_height="80dp"
  191. android:id="@+id/btn_3"
  192. android:text="3"
  193. android:textSize="30sp"
  194. android:layout_marginLeft="10dp"
  195. android:paddingRight="15sp"
  196. android:paddingBottom="15sp"
  197. />
  198. </LinearLayout>
  199. <LinearLayout
  200. android:layout_width="wrap_content"
  201. android:layout_height="wrap_content"
  202. android:orientation="horizontal"
  203. android:layout_marginTop="10dp">
  204. <Button
  205. android:layout_width="170dp"
  206. android:layout_height="80dp"
  207. android:id="@+id/btn_0"
  208. android:text="0"
  209. android:textSize="30sp"
  210. android:paddingRight="15sp"
  211. android:paddingBottom="15sp"
  212. />
  213. <Button
  214. android:layout_width="80dp"
  215. android:layout_height="80dp"
  216. android:id="@+id/btn_pt"
  217. android:text="."
  218. android:textSize="30sp"
  219. android:layout_marginLeft="10dp"
  220. android:paddingRight="15sp"
  221. android:paddingBottom="15sp"
  222. />
  223. </LinearLayout>
  224. </LinearLayout>
  225. <Button
  226. android:id="@+id/btn_eq"
  227. android:layout_width="80dp"
  228. android:layout_height="170dp"
  229. android:layout_marginLeft="10dp"
  230. android:text="="
  231. android:textSize="30sp"
  232. android:paddingRight="15sp"
  233. android:paddingBottom="15sp" />
  234. </LinearLayout>
  235. </LinearLayout>

完成以上代码,你就会看到这样一个效果图

效果如下

如果你觉得这个计算器有点不好看,可以在按钮里面给元素添加颜色

完成简易计算器布局之后就给按钮添加点击事件以及按钮效果

 

以下是MainActivity.java代码

  1. package com.example.a0909_homework_04;
  2. import android.support.v7.app.AppCompatActivity;
  3. import android.os.Bundle;
  4. import android.view.View;
  5. import android.widget.Button;
  6. import android.widget.EditText;
  7. public class MainActivity extends AppCompatActivity implements View.OnClickListener {
  8. //创建Button对象 也就是activity_main.xml里所设置的ID
  9. Button btn_0,btn_1,btn_2,btn_3,btn_4,btn_5,btn_6,btn_7,btn_8,btn_9,btn_pt;
  10. Button btn_mul,btn_div,btn_add,btn_sub;
  11. Button btn_clr,btn_del,btn_eq;
  12. EditText et_input;
  13. boolean clr_flag; //判断et编辑文本框中是否清空
  14. @Override
  15. protected void onCreate(Bundle savedInstanceState) {
  16. super.onCreate(savedInstanceState);
  17. setContentView(R.layout.activity_main);
  18. //实例化对象
  19. setContentView(R.layout.activity_main);
  20. btn_0= (Button) findViewById(R.id.btn_0);
  21. btn_1= (Button) findViewById(R.id.btn_1);
  22. btn_2= (Button) findViewById(R.id.btn_2);
  23. btn_3= (Button) findViewById(R.id.btn_3);
  24. btn_4= (Button) findViewById(R.id.btn_4);
  25. btn_5= (Button) findViewById(R.id.btn_5);
  26. btn_6= (Button) findViewById(R.id.btn_6);
  27. btn_7= (Button) findViewById(R.id.btn_7);
  28. btn_8= (Button) findViewById(R.id.btn_8);
  29. btn_9= (Button) findViewById(R.id.btn_9);
  30. btn_pt= (Button) findViewById(R.id.btn_pt);
  31. btn_add= (Button) findViewById(R.id.btn_add);
  32. btn_sub= (Button) findViewById(R.id.btn_sub);
  33. btn_mul= (Button) findViewById(R.id.btn_mul);
  34. btn_div= (Button) findViewById(R.id.btn_div);
  35. btn_clr= (Button) findViewById(R.id.btn_clr);
  36. btn_del= (Button) findViewById(R.id.btn_del);
  37. btn_eq= (Button) findViewById(R.id.btn_eq);
  38. et_input= (EditText) findViewById(R.id.et_input);
  39. //给按钮设置的点击事件
  40. btn_0.setOnClickListener(this);
  41. btn_1.setOnClickListener(this);
  42. btn_2.setOnClickListener(this);
  43. btn_3.setOnClickListener(this);
  44. btn_4.setOnClickListener(this);
  45. btn_5.setOnClickListener(this);
  46. btn_6.setOnClickListener(this);
  47. btn_7.setOnClickListener(this);
  48. btn_8.setOnClickListener(this);
  49. btn_9.setOnClickListener(this);
  50. btn_pt.setOnClickListener(this);
  51. btn_add.setOnClickListener(this);
  52. btn_sub.setOnClickListener(this);
  53. btn_mul.setOnClickListener(this);
  54. btn_div.setOnClickListener(this);
  55. btn_clr.setOnClickListener(this);
  56. btn_del.setOnClickListener(this);
  57. btn_eq.setOnClickListener(this);
  58. }
  59. @Override
  60. public void onClick(View v) {
  61. String str=et_input.getText().toString();
  62. switch (v.getId()){
  63. case R.id.btn_0:
  64. case R.id.btn_1:
  65. case R.id.btn_2:
  66. case R.id.btn_3:
  67. case R.id.btn_4:
  68. case R.id.btn_5:
  69. case R.id.btn_6:
  70. case R.id.btn_7:
  71. case R.id.btn_8:
  72. case R.id.btn_9:
  73. case R.id.btn_pt:
  74. if(clr_flag){
  75. clr_flag=false;
  76. str="";
  77. et_input.setText("");
  78. }
  79. et_input.setText(str+((Button)v).getText());
  80. break;
  81. case R.id.btn_add:
  82. case R.id.btn_sub:
  83. case R.id.btn_mul:
  84. case R.id.btn_div:
  85. if(clr_flag){
  86. clr_flag=false;
  87. str="";
  88. et_input.setText("");
  89. }
  90. if(str.contains("+")||str.contains("-")||str.contains("×")||str.contains("÷")) {
  91. str=str.substring(0,str.indexOf(" "));
  92. }
  93. et_input.setText(str+" "+((Button)v).getText()+" ");
  94. break;
  95. case R.id.btn_clr:
  96. if(clr_flag)
  97. clr_flag=false;
  98. str="";
  99. et_input.setText("");
  100. break;
  101. case R.id.btn_del: //判断是否为空,然后在进行删除
  102. if(clr_flag){
  103. clr_flag=false;
  104. str="";
  105. et_input.setText("");
  106. }
  107. else if(str!=null&&!str.equals("")){
  108. et_input.setText(str.substring(0,str.length()-1));
  109. }
  110. break;
  111. case R.id.btn_eq: //单独运算最后结果
  112. getResult();//调用下面的方法
  113. break;
  114. }
  115. }
  116. private void getResult() {
  117. String exp=et_input.getText().toString();
  118. if(exp==null||exp.equals("")) return ;
  119. //因为没有运算符所以不用运算
  120. if(!exp.contains(" ")){
  121. return ;
  122. }
  123. if(clr_flag){
  124. clr_flag=false;
  125. return;
  126. }
  127. clr_flag=true;
  128. //截取运算符前面的字符串
  129. String s1=exp.substring(0,exp.indexOf(" "));
  130. //截取的运算符
  131. String op=exp.substring(exp.indexOf(" ")+1,exp.indexOf(" ")+2);
  132. //截取运算符后面的字符串
  133. String s2=exp.substring(exp.indexOf(" ")+3);
  134. double cnt=0;
  135. if(!s1.equals("")&&!s2.equals("")){
  136. double d1=Double.parseDouble(s1);
  137. double d2=Double.parseDouble(s2);
  138. if(op.equals("+")){
  139. cnt=d1+d2;
  140. }
  141. if(op.equals("-")){
  142. cnt=d1-d2;
  143. }
  144. if(op.equals("×")){
  145. cnt=d1*d2;
  146. }
  147. if(op.equals("÷")){
  148. if(d2==0) cnt=0;
  149. else cnt=d1/d2;
  150. }
  151. if(!s1.contains(".")&&!s2.contains(".")&&!op.equals("÷")) {
  152. int res = (int) cnt;
  153. et_input.setText(res+"");
  154. }else {
  155. et_input.setText(cnt+"");}
  156. }
  157. //如果s1是空 s2不是空 就执行下一步
  158. else if(!s1.equals("")&&s2.equals("")){
  159. double d1=Double.parseDouble(s1);
  160. if(op.equals("+")){
  161. cnt=d1;
  162. }
  163. if(op.equals("-")){
  164. cnt=d1;
  165. }
  166. if(op.equals("×")){
  167. cnt=0;
  168. }
  169. if(op.equals("÷")){
  170. cnt=0;
  171. }
  172. if(!s1.contains(".")) {
  173. int res = (int) cnt;
  174. et_input.setText(res+"");
  175. }else {
  176. et_input.setText(cnt+"");}
  177. }
  178. //如果s1是空 s2不是空 就执行下一步
  179. else if(s1.equals("")&&!s2.equals("")){
  180. double d2=Double.parseDouble(s2);
  181. if(op.equals("+")){
  182. cnt=d2;
  183. }
  184. if(op.equals("-")){
  185. cnt=0-d2;
  186. }
  187. if(op.equals("×")){
  188. cnt=0;
  189. }
  190. if(op.equals("÷")){
  191. cnt=0;
  192. }
  193. if(!s2.contains(".")) {
  194. int res = (int) cnt;
  195. et_input.setText(res+"");
  196. }else {
  197. et_input.setText(cnt+"");}
  198. }
  199. else {
  200. et_input.setText("");
  201. }
  202. }
  203. }

以上代码写好,简易的计算器就完成了!!!

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/325308
推荐阅读
相关标签
  

闽ICP备14008679号