经过了大概四个晚上的学习,终于做出了一个小东西,从小白慢慢学到了一些东西:
1.布局的嵌套使用
2.EditText、Button等属性的使用
3.使用时需要先声明,再实例化,按钮需要设置点击事件
4.通过onclick函数来设置点击按钮的作用
5.国际化要把汉字放入string.xml中,从中调用
布局代码:
1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:id="@+id/LinearLayout1" 4 android:layout_width="match_parent" 5 android:layout_height="match_parent" 6 android:orientation="vertical" 7 android:paddingBottom="@dimen/activity_vertical_margin" 8 android:paddingLeft="@dimen/activity_horizontal_margin" 9 android:paddingRight="@dimen/activity_horizontal_margin" 10 android:paddingTop="@dimen/activity_vertical_margin" 11 tools:context=".MainActivity" > 12 13 <LinearLayout 14 android:layout_width="match_parent" 15 android:layout_height="wrap_content" 16 android:orientation="horizontal" /> 17 18 <EditText 19 android:id="@+id/et_content" 20 android:layout_width="match_parent" 21 android:layout_height="60dip" 22 android:background="@drawable/white_bg" 23 android:orientation="horizontal" 24 android:gravity="right|bottom" 25 /> 26 <LinearLayout 27 android:layout_width="fill_parent" 28 android:layout_height="wrap_content" 29 android:layout_marginTop="20dp" 30 android:orientation="horizontal" > 31 32 <Button 33 android:id="@+id/btn_Clear" 34 android:layout_width="60dp" 35 android:layout_height="60dp" 36 android:gravity="right|bottom" 37 android:text="C" 38 android:textSize="20sp" /> 39 40 <Button 41 android:id="@+id/btn_Delete" 42 android:layout_width="60dp" 43 android:layout_height="60dp" 44 android:layout_marginLeft="10dp" 45 android:gravity="right|bottom" 46 android:text="DEL" 47 android:textSize="20sp" /> 48 49 <Button 50 android:id="@+id/btn_divide" 51 android:layout_width="60dp" 52 android:layout_height="60dp" 53 android:layout_marginLeft="10dp" 54 android:gravity="right|bottom" 55 android:text="/" 56 android:textSize="20sp" /> 57 58 <Button 59 android:id="@+id/btn_mut" 60 android:layout_width="60dp" 61 android:layout_height="60dp" 62 android:layout_marginLeft="10dp" 63 android:gravity="right|bottom" 64 android:text="*" 65 android:textSize="20sp" /> 66 </LinearLayout> 67 68 <LinearLayout 69 android:layout_width="fill_parent" 70 android:layout_height="wrap_content" 71 android:layout_marginTop="10dp" 72 android:orientation="horizontal" > 73 74 <Button 75 android:id="@+id/btn_7" 76 android:layout_width="60dp" 77 android:layout_height="60dp" 78 android:gravity="right|bottom" 79 android:text="7" 80 android:textSize="20sp" /> 81 82 <Button 83 android:id="@+id/btn_8" 84 android:layout_width="60dp" 85 android:layout_height="60dp" 86 android:layout_marginLeft="10dp" 87 android:gravity="right|bottom" 88 android:text="8" 89 android:textSize="20sp" /> 90 91 <Button 92 android:id="@+id/btn_9" 93 android:layout_width="60dp" 94 android:layout_height="60dp" 95 android:layout_marginLeft="10dp" 96 android:gravity="right|bottom" 97 android:text="9" 98 android:textSize="20sp" /> 99 100 <Button 101 android:id="@+id/btn_minus" 102 android:layout_width="60dp" 103 android:layout_height="60dp" 104 android:layout_marginLeft="10dp" 105 android:gravity="right|bottom" 106 android:text="-" 107 android:textSize="20sp" /> 108 </LinearLayout> 109 110 111 <LinearLayout 112 android:layout_width="fill_parent" 113 android:layout_height="wrap_content" 114 android:layout_marginTop="10dp" 115 android:orientation="horizontal" > 116 117 <Button 118 android:id="@+id/btn_4" 119 android:layout_width="60dp" 120 android:layout_height="60dp" 121 android:gravity="right|bottom" 122 android:text="4" 123 android:textSize="20sp" /> 124 125 <Button 126 android:id="@+id/btn_5" 127 android:layout_width="60dp" 128 android:layout_height="60dp" 129 android:layout_marginLeft="10dp" 130 android:gravity="right|bottom" 131 android:text="5" 132 android:textSize="20sp" /> 133 134 <Button 135 android:id="@+id/btn_6" 136 android:layout_width="60dp" 137 android:layout_height="60dp" 138 android:layout_marginLeft="10dp" 139 android:gravity="right|bottom" 140 android:text="6" 141 android:textSize="20sp" /> 142 143 <Button 144 android:id="@+id/btn_plus" 145 android:layout_width="60dp" 146 android:layout_height="60dp" 147 android:layout_marginLeft="10dp" 148 android:gravity="right|bottom" 149 android:text="+" 150 android:textSize="20sp" /> 151 </LinearLayout> 152 153 <LinearLayout 154 android:layout_width="fill_parent" 155 android:layout_height="wrap_content" 156 android:orientation="horizontal" 157 android:layout_marginTop="10dp" 158 > 159 160 <LinearLayout 161 android:layout_width="wrap_content" 162 android:layout_height="wrap_content" 163 android:orientation="vertical" 164 > 165 <LinearLayout 166 android:layout_width="wrap_content" 167 android:layout_height="wrap_content" 168 android:orientation="horizontal" 169 > 170 <Button 171 android:id="@+id/btn_1" 172 android:layout_width="60dp" 173 android:layout_height="60dp" 174 android:gravity="right|bottom" 175 android:text="1" 176 android:textSize="20sp" /> 177 178 <Button 179 android:id="@+id/btn_2" 180 android:layout_width="60dp" 181 android:layout_height="60dp" 182 android:layout_marginLeft="10dp" 183 android:gravity="right|bottom" 184 android:text="2" 185 android:textSize="20sp" /> 186 187 <Button 188 android:id="@+id/btn_3" 189 android:layout_width="60dp" 190 android:layout_height="60dp" 191 android:layout_marginLeft="10dp" 192 android:gravity="right|bottom" 193 android:text="3" 194 android:textSize="20sp" /> 195 </LinearLayout> 196 <LinearLayout 197 android:layout_width="fill_parent" 198 android:layout_height="wrap_content" 199 android:layout_marginTop="10dp" 200 android:orientation="horizontal"> 201 202 <Button 203 android:id="@+id/btn_0" 204 android:layout_width="130dp" 205 android:layout_height="60dp" 206 android:gravity="right|bottom" 207 android:text="0" 208 android:textSize="20sp" /> 209 210 <Button 211 android:id="@+id/btn_point" 212 android:layout_width="60dp" 213 android:layout_height="60dp" 214 android:layout_marginLeft="10dp" 215 android:gravity="right|bottom" 216 android:text="." 217 android:textSize="20sp" /> 218 </LinearLayout> 219 </LinearLayout> 220 221 <Button 222 android:id="@+id/btn_equal" 223 android:layout_width="60dp" 224 android:layout_height="130dp" 225 android:text="=" 226 android:layout_marginLeft="10dp" 227 android:textSize="20sp" /> 228 229 </LinearLayout> 230 </LinearLayout>
主函数MainActivity.java
1 package com.brucekun.calculator; 2 3 import android.R.string; 4 import android.os.Bundle; 5 import android.app.Activity; 6 import android.view.Menu; 7 import android.view.View; 8 import android.view.View.OnClickListener; 9 import android.widget.Button; 10 import android.widget.EditText; 11 12 public class MainActivity extends Activity implements OnClickListener{ 13 14 Button btn_0; 15 Button btn_1; 16 Button btn_2; 17 Button btn_3; 18 Button btn_4; 19 Button btn_5; 20 Button btn_6; 21 Button btn_7; 22 Button btn_8; 23 Button btn_9; 24 Button btn_point; 25 Button btn_clear; 26 Button btn_delete; 27 Button btn_del; 28 Button btn_plus; 29 Button btn_minus; 30 Button btn_multiply; 31 Button btn_divide; 32 Button btn_equle; 33 EditText et_input;//显示输入内容的显示屏 34 boolean clear_flag;//清空标识 35 36 @Override 37 protected void onCreate(Bundle savedInstanceState) { 38 super.onCreate(savedInstanceState); 39 setContentView(R.layout.activity_main); 40 //实例化按钮 41 btn_0=(Button) findViewById(R.id.btn_0); 42 btn_1=(Button) findViewById(R.id.btn_1); 43 btn_2=(Button) findViewById(R.id.btn_2); 44 btn_3=(Button) findViewById(R.id.btn_3); 45 btn_4=(Button) findViewById(R.id.btn_4); 46 btn_5=(Button) findViewById(R.id.btn_5); 47 btn_6=(Button) findViewById(R.id.btn_6); 48 btn_7=(Button) findViewById(R.id.btn_7); 49 btn_8=(Button) findViewById(R.id.btn_8); 50 btn_9=(Button) findViewById(R.id.btn_9); 51 btn_point=(Button) findViewById(R.id.btn_point); 52 btn_equle=(Button) findViewById(R.id.btn_equal); 53 btn_plus=(Button) findViewById(R.id.btn_plus); 54 btn_minus=(Button) findViewById(R.id.btn_minus); 55 btn_multiply=(Button) findViewById(R.id.btn_mut); 56 btn_divide=(Button) findViewById(R.id.btn_divide); 57 //实例化显示屏 58 et_input=(EditText) findViewById(R.id.et_content); 59 //设置按钮的点击事件 60 btn_0.setOnClickListener(this); 61 btn_1.setOnClickListener(this); 62 btn_2.setOnClickListener(this); 63 btn_3.setOnClickListener(this); 64 btn_4.setOnClickListener(this); 65 btn_5.setOnClickListener(this); 66 btn_6.setOnClickListener(this); 67 btn_7.setOnClickListener(this); 68 btn_8.setOnClickListener(this); 69 btn_9.setOnClickListener(this); 70 btn_point.setOnClickListener(this); 71 btn_equle.setOnClickListener(this); 72 btn_plus.setOnClickListener(this); 73 btn_minus.setOnClickListener(this); 74 btn_multiply.setOnClickListener(this); 75 btn_divide.setOnClickListener(this); 76 } 77 78 @Override 79 public boolean onCreateOptionsMenu(Menu menu) { 80 // Inflate the menu; this adds items to the action bar if it is present. 81 getMenuInflater().inflate(R.menu.main, menu); 82 return true; 83 } 84 85 @Override 86 public void onClick(View v) { 87 String str=et_input.getText().toString(); 88 switch(v.getId()){ 89 case R.id.btn_0: 90 case R.id.btn_1: 91 case R.id.btn_2: 92 case R.id.btn_3: 93 case R.id.btn_4: 94 case R.id.btn_5: 95 case R.id.btn_6: 96 case R.id.btn_7: 97 case R.id.btn_8: 98 case R.id.btn_9: 99 case R.id.btn_point: 100 if(clear_flag){ 101 clear_flag=false; 102 str=""; 103 et_input.setText(""); 104 } 105 et_input.setText(str+((Button)v).getText()); 106 break; 107 case R.id.btn_plus: 108 case R.id.btn_divide: 109 if(clear_flag){ 110 clear_flag=false; 111 et_input.setText(""); 112 } 113 case R.id.btn_mut: 114 case R.id.btn_minus: 115 et_input.setText(str+" "+((Button)v).getText()+" "); 116 break; 117 case R.id.btn_Clear: 118 clear_flag=false; 119 str=""; 120 et_input.setText(""); 121 case R.id.btn_Delete: 122 if(clear_flag){ 123 clear_flag=false; 124 str=""; 125 et_input.setText(""); 126 }else if(str!=null&&!str.equals("")){ 127 et_input.setText(str.substring(0, str.length()-1)); 128 } 129 case R.id.btn_equal: 130 getResult(); 131 break; 132 } 133 } 134 /* 135 * 运算结果 136 */ 137 private void getResult(){ 138 String exp=et_input.getText().toString(); 139 if(exp==null||exp.equals("")){ 140 return; 141 } 142 if(!exp.contains(" ")){ 143 return; 144 } 145 if(clear_flag){ 146 clear_flag=false; 147 return; 148 } 149 clear_flag=true; 150 String s1=exp.substring(0, exp.indexOf(" "));//运算符前面的字符串 151 String op=exp.substring(exp.indexOf(" ")+1, exp.indexOf(" ")+2);//运算符 152 String s2=exp.substring(exp.indexOf(" ")+3);//运算符后面的字符串
请发表评论