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 }