最新最全的Android計算器開發教程

                                    **Android計算器開發**

———————————————————————-我是分割線———————————————————————–
今天分享一款我大一寫的計算器,花了三天寫出來的,畫面比較不錯,在計算能力上也相當強大,希望看到這篇文章的你可以學到一些知識。項目源碼在我的GitHub裏在文章的下面有GitHub的鏈接點擊即可進入下載。

計算器界面效果圖:
這裏寫圖片描述
註釋:
哈哈,界面還不錯吧,這個界面是我的專業課老師設計的,在這裏借鑑了一下0.0。
這個界面的佈局是用權重做的分割當然你也可以使用表格來裝這個佈局,也同樣可以實現這個界面效果。當然還有其他方法,可以在下面評論與大家一起分享。

下面就是寫這個項目的代碼了:
一、主界面邏輯代碼MainActivity.java*

package com.calculator.cc;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {

    private Button btn3_7;
    private EditText edt1_show;
    private Button backspace_btn1;
    private Button ce_btn2;
    private Button btn4_8;
    private Button btn5_9;
    private Button btn6_chu;
    private Button btn7_4;
    private Button btn8_5;
    private Button btn9_6;
    private Button btn10_xing;
    private Button btn11_1;
    private Button btn12_2;
    private Button btn13_3;
    private Button btn14_jia;
    private Button btn15_0;
    private Button btn16_c;
    private Button btn17_deng;
    private Button btn18_jian;
    // 做一個清空的標記
    boolean flag;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        //去掉狀態欄
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //使屏幕全屏
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
        edt1_show = (EditText) findViewById(R.id.edt1_show);
        backspace_btn1 = (Button) findViewById(R.id.backspace_btn1);
        ce_btn2 = (Button) findViewById(R.id.ce_btn2);
        btn3_7 = (Button) findViewById(R.id.btn3_7);
        btn4_8 = (Button) findViewById(R.id.btn4_8);
        btn5_9 = (Button) findViewById(R.id.btn5_9);
        btn6_chu = (Button) findViewById(R.id.btn6_chu);
        btn7_4 = (Button) findViewById(R.id.btn7_4);
        btn8_5 = (Button) findViewById(R.id.btn8_5);
        btn9_6 = (Button) findViewById(R.id.btn9_6);
        btn10_xing = (Button) findViewById(R.id.btn10_xing);
        btn11_1 = (Button) findViewById(R.id.btn11_1);
        btn12_2 = (Button) findViewById(R.id.btn12_2);
        btn13_3 = (Button) findViewById(R.id.btn13_3);
        btn14_jia = (Button) findViewById(R.id.btn14_jia);
        btn15_0 = (Button) findViewById(R.id.btn15_0);
        btn16_c = (Button) findViewById(R.id.btn16_c);
        btn17_deng = (Button) findViewById(R.id.btn17_deng);
        btn18_jian = (Button) findViewById(R.id.btn18_jian);
        // 寫單擊事件
        // 一次刪一個
        backspace_btn1.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                if (edt1_show.getText().toString() == null
                        || (edt1_show.getText().toString()).equals("")) {
                    return;
                } else {
                    edt1_show.setText((edt1_show.getText().toString()).substring(
                            0, (edt1_show.getText().toString()).length() - 1));
                }
            }
        });
        // 全部清空
        ce_btn2.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                edt1_show.setText("");
                flag = false;
            }
        });
        btn3_7.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {

                String seven = edt1_show.getText().toString() + 7;
                edt1_show.setText(seven);
            }

        });
        btn4_8.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                String eight = edt1_show.getText().toString() + 8;
                edt1_show.setText(eight);
            }
        });
        btn5_9.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {

                String nine = edt1_show.getText().toString() + 9;
                edt1_show.setText(nine);
            }
        });
        btn6_chu.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                if (flag) {
                    fourOperation();
                    String chu = edt1_show.getText().toString();
                    edt1_show.setText(chu.substring(0, chu.length() - 1) + " "
                            + "/" + " ");
                } else {
                    String chu = edt1_show.getText().toString() + " " + "/"
                            + " ";
                    edt1_show.setText(chu);
                    flag = true;
                }

            }
        });
        btn7_4.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {

                String four = edt1_show.getText().toString() + 4;
                edt1_show.setText(four);
            }
        });
        btn8_5.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {

                String five = edt1_show.getText().toString() + 5;

                edt1_show.setText(five);
            }
        });
        btn9_6.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {

                String six = edt1_show.getText().toString() + 6;

                edt1_show.setText(six);
            }
        });
        btn10_xing.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                if (flag) {
                    fourOperation();
                    String xing = edt1_show.getText().toString();
                    edt1_show.setText(xing.substring(0, xing.length() - 1)
                            + " " + "*" + " ");
                } else {
                    String xing = edt1_show.getText().toString() + " " + "*"
                            + " ";
                    edt1_show.setText(xing);
                    flag = true;
                }

            }
        });
        btn11_1.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {

                String one = edt1_show.getText().toString() + 1;

                edt1_show.setText(one);
            }
        });
        btn12_2.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {

                String two = edt1_show.getText().toString() + 2;
                edt1_show.setText(two);
            }
        });
        btn13_3.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {

                String three = edt1_show.getText().toString() + 3;
                edt1_show.setText(three);
            }
        });
        btn14_jia.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {

                if (flag) {
                    fourOperation();
                    String jia = edt1_show.getText().toString();
                    edt1_show.setText(jia.substring(0, jia.length() - 1) + " "
                            + "+" + " ");
                } else {
                    String jia = edt1_show.getText().toString() + " " + "+"
                            + " ";
                    edt1_show.setText(jia);
                    flag = true;
                }

            }
        });
        btn15_0.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {

                String zero = edt1_show.getText().toString() + 0;

                edt1_show.setText(zero);
            }
        });
        btn16_c.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                String c = edt1_show.getText().toString() + ".";
                edt1_show.setText(c);
            }
        });
        btn17_deng.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                getResult();
            }
        });
        btn18_jian.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {

                if (flag) {
                    fourOperation();
                    String jian = edt1_show.getText().toString();
                    edt1_show.setText(jian.substring(0, jian.length() - 1)
                            + " " + "-" + " ");
                } else {
                    String jian = edt1_show.getText().toString() + " " + "-"
                            + " ";
                    edt1_show.setText(jian);
                    flag = true;
                }

            }
        });
    }

    // 寫等號的方法
    private void getResult() {
        String deng = edt1_show.getText().toString();
        // 判斷單擊等號時編輯框的內容是否爲空
        if (deng == null || deng.equals("")) {
            return;
        }
        if (!deng.contains(" ")) {
            return;
        }
        double result = 0;
        // 截取加號兩邊的字符及獲得加號
        String s1 = deng.substring(0, deng.indexOf(" "));// 運算符前面的字符
        String op = deng
                .substring(deng.indexOf(" ") + 1, deng.indexOf(" ") + 2);
        String s2 = deng.substring(deng.indexOf(" ") + 3);
        // s1和s2不爲空的情況下進行判斷運算
        if (!s1.equals("") && !s2.equals("")) {
            double d1 = Double.parseDouble(s1);
            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) {
                    result = 0;
                } else {
                    result = d1 / d2;
                }
            }
            // 判斷s1和s2中是否有小數點
            if (!s1.contains(".") && !s2.contains(".")) {
                int r = (int) result;
                if (op.equals("/")) {
                    edt1_show.setText(result + "");
                } else {
                    edt1_show.setText(r + "");
                }

            } else {
                edt1_show.setText(result + "");
            }
            // 進行判斷是否爲一個數時點擊等號和爲0時的情況
        } else if (!s1.equals("") && s2.equals("")) {

            edt1_show.setText(edt1_show.getText().toString());
        } 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;
                edt1_show.setText(r + "");
            } else {
                edt1_show.setText(result + "");
            }
        } else {
            edt1_show.setText(" ");
        }
    }

    // 寫一個加減乘除的方法
    private void fourOperation() {
        String deng = edt1_show.getText().toString();
        // 判斷單擊等號時編輯框的內容是否爲空
        if (deng == null || deng.equals("")) {
            return;
        }
        if (!deng.contains(" ")) {
            return;
        }
        double result = 0;
        // 截取加號兩邊的字符及獲得加號
        String s1 = deng.substring(0, deng.indexOf(" "));// 運算符前面的字符
        String op = deng
                .substring(deng.indexOf(" ") + 1, deng.indexOf(" ") + 2);
        String s2 = deng.substring(deng.indexOf(" ") + 3);

        // s1和s2不爲空的情況下進行判斷運算
        if (!s1.equals("") && !s2.equals("")) {
            double d1 = Double.parseDouble(s1);
            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) {
                    result = 0;
                } else {
                    result = d1 / d2;
                }
            }
            // 判斷s1和s2中是否有小數點
            if (!s1.contains(".") && !s2.contains(".")) {
                int r = (int) result;
                if (op.equals("/")) {
                    edt1_show.setText(result + " ");
                } else {
                    if (op.equals("+")) {
                        edt1_show.setText(r + " ");
                    } else if (op.equals("-")) {
                        edt1_show.setText(r + " ");
                    } else if (op.equals("*")) {
                        edt1_show.setText(r + " ");
                    } else {
                        edt1_show.setText(r + " ");
                    }
                }

            } else {
                if (op.equals("+")) {
                    edt1_show.setText(result + " ");
                } else if (op.equals("-")) {
                    edt1_show.setText(result + " ");
                } else if (op.equals("*")) {
                    edt1_show.setText(result + " ");
                } else {
                    edt1_show.setText(result + " ");
                }
            }
            // 判斷式子子右邊是否爲空
        } else if (!s1.equals("") && s2.equals("")) {
            if (op.equals("+")) {
                edt1_show.setText(result + " ");
            } else if (op.equals("-")) {
                edt1_show.setText(result + " ");
            } else if (op.equals("*")) {
                edt1_show.setText(result + " ");
            } else {
                edt1_show.setText(result + " ");
            }
        }
    }
}

二、面佈局代碼activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="vertical"
    tools:context=".MainActivity" >



        <EditText
           android:textCursorDrawable="@drawable/click"
            android:layout_weight="2"
            android:id="@+id/edt1_show"
            android:textSize="50sp"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:background="#F1D1C6"

            />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:orientation="horizontal" 
        android:layout_weight="2"
        >

        <Button
            android:id="@+id/backspace_btn1"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="2"
            android:text="backspace"
            android:background="#BF3EFF"
             />

        <Button
            android:id="@+id/ce_btn2"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="2"
             android:background="#CAFF70"
            android:text="ce" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="2"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/btn3_7"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="2"
            android:text="7" 
             android:background="#AFDCEF"

            />

        <Button
            android:id="@+id/btn4_8"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="2"
            android:text="8" 
            android:background="#ffffff"
            />

        <Button
            android:id="@+id/btn5_9"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="2"
            android:text="9"
            android:background="#AFDCEF"

             />

        <Button
            android:id="@+id/btn6_chu"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="2"
            android:text="/"
              android:background="#ffffff"
             />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="2"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/btn7_4"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:text="4" 
            android:background="#ffffff"
            />

        <Button
            android:id="@+id/btn8_5"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:text="5" 
            android:background="#AFDCEF"
            />

        <Button
            android:id="@+id/btn9_6"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="6"
             android:background="#ffffff"
             />

        <Button
            android:id="@+id/btn10_xing"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:text="*" 
             android:background="#AFDCEF"
            />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="2"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/btn11_1"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:text="1" 
              android:background="#AFDCEF"
            />

        <Button
            android:id="@+id/btn12_2"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:text="2"
             android:background="#ffffff"

             />

        <Button
            android:id="@+id/btn13_3"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:text="3" 
            android:background="#AFDCEF"
            />

        <Button
            android:id="@+id/btn14_jia"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:text="+" 
             android:background="#ffffff"

            />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="2"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/btn15_0"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:text="0"
            android:background="#ffffff"
             />

        <Button
            android:id="@+id/btn16_c"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:text="."
                android:background="#AFDCEF"
             />

        <Button
            android:id="@+id/btn17_deng"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:text="="
             android:background="#F4DA3D"
             />

        <Button
            android:id="@+id/btn18_jian"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:text="-" 
               android:background="#AFDCEF"
            />
    </LinearLayout>

</LinearLayout>

這個項目的源碼在我的GitHub中點擊下面鏈接即可進入下載:
GitHub:https://github.com/TopGradeModel/Calculator
結語:就先分享這麼多,如果對項目有什麼不同之處或建議,歡迎大家下面評論出來,大家一起學習和討論。

版權聲明:非商用自由轉載-保持署名-註明出處
署名(TM):TopGradeModel

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章