学习安卓编程,第二周,我们学习的是布局的设计,还有一些简单功能的实现,实验课,我们做的是一个简单的计算器:
示例图:
代码实现:
Strings.xml文件代码:
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">计算器</string> <string name="action_settings">Settings</string> <string name="tvResult"></string> <string name="btnbackspace">backspace</string> <string name="btnCE">CE</string> <string name="btn0">0</string> <string name="btn1">1</string> <string name="btn2">2</string> <string name="btn3">3</string> <string name="btn4">4</string> <string name="btn5">5</string> <string name="btn6">6</string> <string name="btn7">7</string> <string name="btn8">8</string> <string name="btn9">9</string> <string name="btnC">C</string> <string name="btnEqu">=</string> <string name="btnAdd">+</string> <string name="btnSub">-</string> <string name="btnMul">*</string> <string name="btnDiv">/</string> </resources>
布局文件mian.xml代码:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content"> <TextView android:id="@+id/tvResult" android:layout_width="fill_parent" android:layout_height="wrap_content" android:height="50dp" android:text="@string/tvResult" /> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content"> <Button android:id="@+id/btnBackspace" android:layout_width="wrap_content" android:layout_height="wrap_content" android:width="150dp" android:layout_marginLeft="10dp" android:text="@string/btnbackspace"/> <Button android:id="@+id/btnCE" android:layout_width="wrap_content" android:layout_height="wrap_content" android:width="150dp" android:text="@string/btnCE"/> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content"> <Button android:id="@+id/btn7" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:width="75dp" android:text="@string/btn7"/> <Button android:id="@+id/btn8" android:layout_width="wrap_content" android:layout_height="wrap_content" android:width="75dp" android:text="@string/btn8"/> <Button android:id="@+id/btn9" android:layout_width="wrap_content" android:layout_height="wrap_content" android:width="75dp" android:text="@string/btn9"/> <Button android:id="@+id/btnDiv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:width="75dp" android:text="@string/btnDiv"/> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content"> <Button android:id="@+id/btn4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:width="75dp" android:text="@string/btn4"/> <Button android:id="@+id/btn5" android:layout_width="wrap_content" android:layout_height="wrap_content" android:width="75dp" android:text="@string/btn5"/> <Button android:id="@+id/btn6" android:layout_width="wrap_content" android:layout_height="wrap_content" android:width="75dp" android:text="@string/btn6"/> <Button android:id="@+id/btnMul" android:layout_width="wrap_content" android:layout_height="wrap_content" android:width="75dp" android:text="@string/btnMul"/> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content"> <Button android:id="@+id/btn1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:width="75dp" android:text="@string/btn1"/> <Button android:id="@+id/btn2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:width="75dp" android:text="@string/btn2"/> <Button android:id="@+id/btn3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:width="75dp" android:text="@string/btn3"/> <Button android:id="@+id/btnAdd" android:layout_width="wrap_content" android:layout_height="wrap_content" android:width="75dp" android:text="@string/btnAdd"/> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content"> <Button android:id="@+id/btn0" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:width="75dp" android:text="@string/btn0"/> <Button android:id="@+id/btnC" android:layout_width="wrap_content" android:layout_height="wrap_content" android:width="75dp" android:text="@string/btnC"/> <Button android:id="@+id/btnEqu" android:layout_width="wrap_content" android:layout_height="wrap_content" android:width="75dp" android:text="@string/btnEqu"/> <Button android:id="@+id/btnSub" android:layout_width="wrap_content" android:layout_height="wrap_content" android:width="75dp" android:text="@string/btnSub"/> </LinearLayout> </LinearLayout>
业务逻辑实现的代码MainActivity.java文件:
package com.example.week2; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; import android.app.Activity; public class MainActivity extends Activity implements OnClickListener{ //声明一些控件 Button btn0=null; Button btn1=null; Button btn2=null; Button btn3=null; Button btn4=null; Button btn5=null; Button btn6=null; Button btn7=null; Button btn8=null; Button btn9=null; Button btnBackspace=null; Button btnCE=null; Button btnC=null; Button btnAdd=null; Button btnSub=null; Button btnMul=null; Button btnDiv=null; Button btnEqu=null; TextView tvResult=null; //声明两个参数。接收tvResult前后的值 double num1=0,num2=0; double Result=0;//计算结果 int op=0;//判断操作数, boolean isClickEqu=false;//判断是否按了“=”按钮 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //从布局文件中获取控件, btn0=(Button)findViewById(R.id.btn0); btn1=(Button)findViewById(R.id.btn1); btn2=(Button)findViewById(R.id.btn2); btn3=(Button)findViewById(R.id.btn3); btn4=(Button)findViewById(R.id.btn4); btn5=(Button)findViewById(R.id.btn5); btn6=(Button)findViewById(R.id.btn6); btn7=(Button)findViewById(R.id.btn7); btn8=(Button)findViewById(R.id.btn8); btn9=(Button)findViewById(R.id.btn9); btnBackspace=(Button)findViewById(R.id.btnBackspace); btnCE=(Button)findViewById(R.id.btnCE); btnC=(Button)findViewById(R.id.btnC); btnEqu=(Button)findViewById(R.id.btnEqu); btnAdd=(Button)findViewById(R.id.btnAdd); btnSub=(Button)findViewById(R.id.btnSub); btnMul=(Button)findViewById(R.id.btnMul); btnDiv=(Button)findViewById(R.id.btnDiv); tvResult=(TextView)findViewById(R.id.tvResult); //添加监听\ btnBackspace.setOnClickListener(this); btnCE.setOnClickListener(this); btn0.setOnClickListener(this); btn1.setOnClickListener(this); btn2.setOnClickListener(this); btn3.setOnClickListener(this); btn4.setOnClickListener(this); btn5.setOnClickListener(this); btn6.setOnClickListener(this); btn7.setOnClickListener(this); btn8.setOnClickListener(this); btn9.setOnClickListener(this); btnAdd.setOnClickListener(this); btnSub.setOnClickListener(this); btnMul.setOnClickListener(this); btnDiv.setOnClickListener(this); btnEqu.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { //btnBackspace和CE-------------------- case R.id.btnBackspace: String myStr=tvResult.getText().toString(); try { tvResult.setText(myStr.substring(0, myStr.length()-1)); } catch (Exception e) { tvResult.setText(""); } break; case R.id.btnCE: tvResult.setText(null); break; //btn0--9--------------------------- case R.id.btn0: if(isClickEqu) { tvResult.setText(null); isClickEqu=false; } String myString=tvResult.getText().toString(); myString+="0"; tvResult.setText(myString); break; case R.id.btn1: if(isClickEqu) { tvResult.setText(null); isClickEqu=false; } String myString1=tvResult.getText().toString(); myString1+="1"; tvResult.setText(myString1); break; case R.id.btn2: if(isClickEqu) { tvResult.setText(null); isClickEqu=false; } String myString2=tvResult.getText().toString(); myString2+="2"; tvResult.setText(myString2); break; case R.id.btn3: if(isClickEqu) { tvResult.setText(null); isClickEqu=false; } String myString3=tvResult.getText().toString(); myString3+="3"; tvResult.setText(myString3); break; case R.id.btn4: if(isClickEqu) { tvResult.setText(null); isClickEqu=false; } String myString4=tvResult.getText().toString(); myString4+="4"; tvResult.setText(myString4); break; case R.id.btn5: if(isClickEqu) { tvResult.setText(null); isClickEqu=false; } String myString5=tvResult.getText().toString(); myString5+="5"; tvResult.setText(myString5); break; case R.id.btn6: if(isClickEqu) { tvResult.setText(null); isClickEqu=false; } String myString6=tvResult.getText().toString(); myString6+="6"; tvResult.setText(myString6); break; case R.id.btn7: if(isClickEqu) { tvResult.setText(null); isClickEqu=false; } String myString7=tvResult.getText().toString(); myString7+="7"; tvResult.setText(myString7); break; case R.id.btn8: if(isClickEqu) { tvResult.setText(null); isClickEqu=false; } String myString8=tvResult.getText().toString(); myString8+="8"; tvResult.setText(myString8); break; case R.id.btn9: if(isClickEqu) { tvResult.setText(null); isClickEqu=false; } String myString9=tvResult.getText().toString(); myString9+="9"; tvResult.setText(myString9); break; //btn+-*/=-------------------------------- case R.id.btnAdd: String myStringAdd=tvResult.getText().toString(); if(myStringAdd.equals(null)) { return; } num1=Double.valueOf(myStringAdd); tvResult.setText(null); op=1; isClickEqu=false; break; case R.id.btnSub: String myStringSub=tvResult.getText().toString(); if(myStringSub.equals(null)) { return; } num1=Double.valueOf(myStringSub); tvResult.setText(null); op=2; isClickEqu=false; break; case R.id.btnMul: String myStringMul=tvResult.getText().toString(); if(myStringMul.equals(null)) { return; } num1=Double.valueOf(myStringMul); tvResult.setText(null); op=3; isClickEqu=false; break; case R.id.btnDiv: String myStringDiv=tvResult.getText().toString(); if(myStringDiv.equals(null)) { return; } num1=Double.valueOf(myStringDiv); tvResult.setText(null); op=4; isClickEqu=false; break; case R.id.btnEqu: String myStringEqu=tvResult.getText().toString(); if(myStringEqu.equals(null)) { return; } num2=Double.valueOf(myStringEqu); tvResult.setText(null); switch (op) { case 0: Result=num2; break; case 1: Result=num1+num2; break; case 2: Result=num1-num2; break; case 3: Result=num1*num2; break; case 4: Result=num1/num2; break; default: Result=0; break; } tvResult.setText(String.valueOf(Result)); isClickEqu=true; break; default: break; } } }
源码下载:下载