Android Studio製作簡單計算器
阿新 • • 發佈:2018-12-03
學習了表格佈局GridLayout,趁熱打鐵,利用GridLayout製作了一個計算器介面,以及實現了簡單的計算功能。直接上效果圖。
activity_main.xml佈局檔案
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:orientation="vertical" android:background="@mipmap/beijingtu" tools:context="com.example.a13468.gridlayout.MainActivity"> <EditText android:id="@+id/ediText" android:layout_width="300dp" android:layout_height="70dp" android:layout_marginBottom="10dp" android:background="@drawable/custom_boder" android:editable="false" android:gravity="right|center_vertical" android:paddingRight="20dp" android:hint="請輸入數字" android:textSize="30sp" /> <GridLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:columnCount="5" android:rowCount="6"> <Button android:id="@+id/button1" android:layout_width="60dp" android:layout_height="wrap_content" android:text="MC" android:background="#c5d381" android:layout_margin="2dp" /> <Button android:id="@+id/button2" android:layout_width="60dp" android:layout_height="wrap_content" android:text="MR" android:background="#c5d381" android:layout_margin="2dp" /> <Button android:id="@+id/button3" android:layout_width="60dp" android:layout_height="wrap_content" android:text="MS" android:background="#c5d381" android:layout_margin="2dp" /> <Button android:id="@+id/button4" android:layout_width="60dp" android:layout_height="wrap_content" android:text="M+" android:background="#c5d381" android:layout_margin="2dp" /> <Button android:id="@+id/button5" android:layout_width="60dp" android:layout_height="wrap_content" android:text="M-" android:background="#c5d381" android:layout_margin="2dp" /> <Button android:id="@+id/button6" android:layout_width="60dp" android:layout_height="wrap_content" android:text="←" android:background="#c5d381" android:layout_margin="2dp" /> <Button android:id="@+id/button7" android:layout_width="60dp" android:layout_height="wrap_content" android:text="CE" android:background="#c5d381" android:layout_margin="2dp" /> <Button android:id="@+id/button8" android:layout_width="60dp" android:layout_height="wrap_content" android:text="C" android:background="#c5d381" android:layout_margin="2dp" /> <Button android:id="@+id/button9" android:layout_width="60dp" android:layout_height="wrap_content" android:text="±" android:background="#c5d381" android:layout_margin="2dp" /> <Button android:id="@+id/button10" android:layout_width="60dp" android:layout_height="wrap_content" android:text="√" android:background="#c5d381" android:layout_margin="2dp" /> <Button android:id="@+id/button11" android:layout_width="60dp" android:layout_height="wrap_content" android:text="9" android:background="#c5d381" android:layout_margin="2dp" /> <Button android:id="@+id/button12" android:layout_width="60dp" android:layout_height="wrap_content" android:text="8" android:background="#c5d381" android:layout_margin="2dp" /> <Button android:id="@+id/button13" android:layout_width="60dp" android:layout_height="wrap_content" android:text="7" android:background="#c5d381" android:layout_margin="2dp" /> <Button android:id="@+id/button14" android:layout_width="60dp" android:layout_height="wrap_content" android:text="/" android:background="#c5d381" android:layout_margin="2dp" /> <Button android:id="@+id/button15" android:layout_width="60dp" android:layout_height="wrap_content" android:text="%" android:background="#c5d381" android:layout_margin="2dp" /> <Button android:id="@+id/button16" android:layout_width="60dp" android:layout_height="wrap_content" android:text="4" android:background="#c5d381" android:layout_margin="2dp" /> <Button android:id="@+id/button17" android:layout_width="60dp" android:layout_height="wrap_content" android:text="5" android:background="#c5d381" android:layout_margin="2dp" /> <Button android:id="@+id/button18" android:layout_width="60dp" android:layout_height="wrap_content" android:text="6" android:background="#c5d381" android:layout_margin="2dp" /> <Button android:id="@+id/button19" android:layout_width="60dp" android:layout_height="wrap_content" android:text="*" android:background="#c5d381" android:layout_margin="2dp" /> <Button android:id="@+id/button20" android:layout_width="60dp" android:layout_height="wrap_content" android:text="1/X" android:background="#c5d381" android:layout_margin="2dp" /> <Button android:id="@+id/button21" android:layout_width="60dp" android:layout_height="wrap_content" android:text="1" android:background="#c5d381" android:layout_margin="2dp" /> <Button android:id="@+id/button22" android:layout_width="60dp" android:layout_height="wrap_content" android:text="2" android:background="#c5d381" android:layout_margin="2dp" /> <Button android:id="@+id/button23" android:layout_width="60dp" android:layout_height="wrap_content" android:text="3" android:background="#c5d381" android:layout_margin="2dp" /> <Button android:id="@+id/button24" android:layout_width="60dp" android:layout_height="wrap_content" android:text="-" android:background="#c5d381" android:layout_margin="2dp" /> <Button android:id="@+id/button25" android:layout_width="60dp" android:layout_height="100dp" android:layout_rowSpan="2" android:text="=" android:background="#c5d381" android:layout_margin="2dp" /> <Button android:id="@+id/button26" android:layout_width="120dp" android:layout_height="wrap_content" android:layout_columnSpan="2" android:text="0" android:background="#c5d381" android:layout_margin="2dp" /> <Button android:id="@+id/button27" android:layout_width="60dp" android:layout_height="wrap_content" android:text="." android:background="#c5d381" android:layout_margin="2dp" /> <Button android:id="@+id/button28" android:layout_width="60dp" android:layout_height="wrap_content" android:text="+" android:background="#c5d381" android:layout_margin="2dp" /> </GridLayout> </LinearLayout>
MainActivity.java檔案
package com.example.a13468.gridlayout; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; public class MainActivity extends Activity implements View.OnClickListener{ //數字0-9 private Button n_0; private Button n_1; private Button n_2; private Button n_3; private Button n_4; private Button n_5; private Button n_6; private Button n_7; private Button n_8; private Button n_9; //運算子 private Button y_j;//+ private Button y_jj;//- private Button y_c;//* private Button y_cc;//除 private Button y_d;//= private Button y_x;//小數點 //清除 private Button det; boolean clean;//清空標識 //結果顯示集 private EditText editText; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //數字0——9例項化 n_0=findViewById(R.id.button26); n_1=findViewById(R.id.button21); n_2=findViewById(R.id.button22); n_3=findViewById(R.id.button23); n_4=findViewById(R.id.button16); n_5=findViewById(R.id.button17); n_6=findViewById(R.id.button18); n_7=findViewById(R.id.button13); n_8=findViewById(R.id.button12); n_9=findViewById(R.id.button11); //運算子例項化 y_j=findViewById(R.id.button28);//加 y_jj=findViewById(R.id.button24);//減 y_c=findViewById(R.id.button19);//乘 y_cc=findViewById(R.id.button14);//除 y_d=findViewById(R.id.button25);//等 y_x=findViewById(R.id.button27);//小數點 det=findViewById(R.id.button8);//清除 //結果顯示集 editText=findViewById(R.id.ediText); //新增時間點選時間 n_0.setOnClickListener( this); n_1.setOnClickListener(this); n_2.setOnClickListener( this); n_3.setOnClickListener( this); n_4.setOnClickListener(this); n_5.setOnClickListener( this); n_6.setOnClickListener( this); n_7.setOnClickListener(this); n_8.setOnClickListener( this); n_9.setOnClickListener( this); y_j.setOnClickListener( this); y_jj.setOnClickListener( this); y_c.setOnClickListener( this); y_cc.setOnClickListener( this); y_x.setOnClickListener( this); y_d.setOnClickListener( this); det.setOnClickListener( this); } //讀取每個按鈕內容 public void onClick(View view){ //獲取文字內容 String input=editText.getText().toString(); switch (view.getId()){ case R.id.button26: case R.id.button21: case R.id.button22: case R.id.button23: case R.id.button16: case R.id.button17: case R.id.button18: case R.id.button13: case R.id.button12: case R.id.button11: case R.id.button27://小數點 if(clean){ clean=false; editText.setText("");//賦值為空 } editText.setText(input+((Button)view).getText()+"");//結果集就是本身 break; case R.id.button28: case R.id.button24: case R.id.button19: case R.id.button14://除 if(clean){ clean=false; input=""; editText.setText(""); } editText.setText(input+" "+((Button)view).getText()+" "); break; case R.id.button8://清除 if(clean){ clean=false; input=""; editText.setText(""); }else if(input!=null || !input.equals("")){ //如果獲取內容為空 editText.setText(input.substring(0,input.length() - 1 ));//結果集為空 break; } break; case R.id.button25://運算結果= getResult();//呼叫處理結果方法 break; } } //運算結果方法 private void getResult(){ String exp=editText.getText().toString();//獲取文字框內容 if(exp==null||exp.equals("")){ return; } if(!exp.contains("")){ return; } if(clean){ clean=false; return; } clean=true; double result=0; //進行擷取 //運算子前的數字 String s1=exp.substring(0,exp.indexOf(" ")); //運算子 String op=exp.substring(exp.indexOf(" ")+1,exp.indexOf(" ")+2); //運算子後的數字 String s2=exp.substring(exp.indexOf(" ")+3); if(!s1.equals("")&&!s2.equals("")){ //如果包含小數點的運算 double d1=Double.parseDouble(s1);//則數字都是double型別 double d2=Double.parseDouble(s2); if(op.equals("+")){ //如果是+ result=d1+d2; }else if(op.equals("-")){ //如果是- result=d1-d2; }else if(op.equals("*")){ //如果是* result=d1*d2; }else if(op.equals("/")){ if(d2==0){ //如果被除數是0 result=0;//則結果為0 } else { //否則執行正常運算 result=d1/d2; } } if(!s1.contains(".") &&!s2.contains(".")&&!op.equals("/")){ //如果是整數型別 int r=(int)result;//都是整形 editText.setText(r+""); }else { editText.setText(result+""); } }else if(!s1.equals("")&& s2.equals("")){ //如果只輸入運算子前的數字 editText.setText(exp);//直接返回當前輸入內容 }else if (s1.equals("")&& !s2.equals("")){ //如果是隻輸入運算子後面的數 double d2 =Double.parseDouble(s2); //運算子當前沒有輸入數字 if(op.equals("+")){ result= 0 + d2; }else if(op.equals("-")){ result= 0 - d2; }else if (op.equals("*")){ result= 0; }else if(op.equals("/")){ result= 0; } if(!s1.contains(".")&&!s2.contains(".")){ int r=(int) result; editText.setText(r+""); }else { editText.setText(result+""); } }else { editText.setText(""); } } }