Android Studio實現簡易計算器設計

本文實例為大傢分享瞭Android Studio實現簡易計算器的具體代碼,供大傢參考,具體內容如下

一、題目

1、如圖所示(實際設計,類似此界面樣式即可,全屏時,按鈕將會縱向拉伸),利用網格佈局管理器設計一個居中、滿屏計算器,項目名稱:clc666b;(666,改成自己的實際編號)

2、加、乘分別用2個單選按鈕進行選擇;

3、為clc666b編寫程序(clc666a不需要編程,隻設計界面即可),根據選擇的加(乘)單選按鈕,實現兩個數的加法和乘法的簡單計算。

4、為瞭簡化程序設計,上方的數據區也可以設計成3個文本框(如果一個文本框實現功能,則更好),分別用作被(乘)加數、加(乘)數、合(積);

二、分析

1.首要的目標是先做一個窗口,窗口設計需要滿屏平分,所以要修改每一個部件的權重。

2.java程序設計,要監聽不同種類的按鍵,網上基本上都是普通按鍵的程序,沒有radiobutton的,這個題目對於我這種新手來說有點不太友好,不能直接抄網上的,還要根據老師上課講的改一改。

(1)當按下數字按鍵時,把按鍵所對應的數字存到一個字符串中,然後更新text。

(2)如果按下刪除的時候把字符串最後一個字符刪去即可,然後更新text.。

(3)當按下運算符號鍵時,把前面的字符存在一個字符串a中,並保存運算符號鍵的id地址。

(4)繼續進行前兩步的操作,直到按下等於號鍵運行(5)。

(5)把運算符號後的給字符串b,根據id來對a和b進行運算,更新text。

三、代碼

1.更新後的xml代碼

<?xml version="1.0" encoding="utf-8"?>
<GridLayout 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:layout_row="6"
    android:layout_column="3"
    android:background="#FF0097A7"
    tools:context=".MainActivity">
 
    <TextView
        android:id="@+id/textview1"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_rowSpan="1"
        android:layout_rowWeight="2"
        android:layout_columnSpan="3"
        android:layout_columnWeight="3"
        android:background="#F1D5A2"
        android:text=" "
        android:textSize="30sp" />
 
    <Button
        android:id="@+id/nm1"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_row="3"
        android:layout_rowSpan="1"
        android:layout_rowWeight="1"
        android:layout_column="0"
        android:layout_columnSpan="1"
        android:layout_columnWeight="1"
        android:text="1"
        android:textSize="36sp" />
 
    <Button
        android:id="@+id/nm2"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_rowSpan="1"
        android:layout_rowWeight="1"
        android:layout_columnSpan="1"
        android:layout_columnWeight="1"
        android:text="2"
        android:textSize="36sp" />
 
    <RadioGroup
        android:id="@+id/radioGroup2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_rowSpan="2"
        android:layout_rowWeight="1"
        android:layout_columnSpan="1"
        android:layout_columnWeight="1"
        android:layout_gravity="center">
 
        <RadioButton
            android:id="@+id/mul"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_rowWeight="1"
            android:layout_columnWeight="1"
            android:checked="false"
            android:text="×"
            android:textSize="36sp" />
 
        <RadioButton
            android:id="@+id/add"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_rowWeight="1"
            android:layout_columnWeight="1"
            android:checked="false"
            android:text="+"
            android:textSize="36sp" />
 
    </RadioGroup>
 
    <Button
        android:id="@+id/nm3"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_row="4"
        android:layout_rowSpan="1"
        android:layout_rowWeight="1"
        android:layout_column="0"
        android:layout_columnSpan="1"
        android:layout_columnWeight="1"
        android:text="3"
        android:textSize="36sp" />
 
    <Button
        android:id="@+id/del"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_rowSpan="1"
        android:layout_rowWeight="1"
        android:layout_columnSpan="1"
        android:layout_columnWeight="1"
        android:text="DEL"
        android:textSize="36sp" />
 
    <Button
        android:id="@+id/equ"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_row="5"
        android:layout_rowSpan="1"
        android:layout_rowWeight="1"
        android:layout_column="0"
        android:layout_columnSpan="2"
        android:layout_columnWeight="1"
        android:text="="
        android:textSize="36sp" />
 
</GridLayout>

2.更新後的java代碼

package com.example.lenovo.clc231b;
 
import androidx.appcompat.app.AppCompatActivity;
 
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.view.View.OnClickListener;
import android.widget.TextView;
 
public class MainActivity extends AppCompatActivity {
 
    private String num = "";
    private String num_zong = "";
    private int fore,back,lenth,id;
    TextView textview1;
    Button nm1;
    Button nm2;
    Button nm3;
    Button del;
    Button equ;
    Button mul;
    Button add;
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        textview1=(TextView)findViewById(R.id.textview1);
 
        nm1 = (Button)findViewById(R.id.nm1);
        nm2 = (Button)findViewById(R.id.nm2);
        nm3 = (Button)findViewById(R.id.nm3);
        del = (Button)findViewById(R.id.del);
        equ = (Button)findViewById(R.id.equ);
        mul = (Button)findViewById(R.id.mul);
        add = (Button)findViewById(R.id.add);
 
        nm1.setOnClickListener(listener);
        nm2.setOnClickListener(listener);
        nm3.setOnClickListener(listener);
        del.setOnClickListener(listener);
        equ.setOnClickListener(listener);
        mul.setOnClickListener(listener);
        add.setOnClickListener(listener);
 
    }
    //監聽按鈕
    public OnClickListener listener = new OnClickListener() {
        @Override
        public void onClick(View view) {
            switch (view.getId()){
                case R.id.nm1:
                    number(1);
                    break;
                case R.id.nm2:
                    number(2);
                    break;
                case R.id.nm3:
                    number(3);
                    break;
                case R.id.del:
                    delete();
                    break;
                case R.id.equ:
                    result();
                    break;
                case R.id.mul:
                    Get_mul_add(1);
                    break;
                case R.id.add:
                    Get_mul_add(2);
                    break;
                default:
                    break;
            }
            textview1.setText(num);
        }
    };
 
    private void Get_mul_add(int flag){
        fore = Integer.valueOf(num);
        if(flag == 1) {
            id = R.id.mul;
            num += "×";
        }
        else {
            id = R.id.add;
            num += "+";
        }
        textview1.setText(num);
        lenth = num.length();
    }
 
    private void result() {
        num_zong = num;
        num = num.substring(lenth);
        back = Integer.valueOf(num);
        if(id == R.id.mul)
            num = String.valueOf((fore*back));
        else
            num = String.valueOf((fore+back));
        num = num_zong + "=" + num;
    }
 
    private void delete() {
        num = num.substring(0,num.length()-1);
    }
 
    private void number(int i) {
        num += i;
    }
}

3.原來的代碼

<?xml version="1.0" encoding="utf-8"?>
<GridLayout 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:layout_row="6"
    android:layout_column="3"
    android:background="#FF0097A7"
    tools:context=".MainActivity">
 
    <TextView
        android:id="@+id/textview1"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_rowSpan="1"
        android:layout_rowWeight="3"
        android:layout_columnSpan="3"
        android:layout_columnWeight="3"
        android:background="#F1D5A2"
        android:text=" "
        android:textSize="30sp" />
 
    <Button
        android:id="@+id/button1"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_row="3"
        android:layout_rowSpan="1"
        android:layout_rowWeight="1"
        android:layout_column="0"
        android:layout_columnSpan="1"
        android:layout_columnWeight="1"
        android:text="1"
        android:textSize="36sp" />
 
    <Button
        android:id="@+id/button2"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_rowSpan="1"
        android:layout_rowWeight="1"
        android:layout_columnSpan="1"
        android:layout_columnWeight="1"
        android:text="2"
        android:textSize="36sp" />
 
    <RadioGroup
        android:id="@+id/radioGroup2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_rowSpan="2"
        android:layout_rowWeight="1"
        android:layout_columnSpan="1"
        android:layout_columnWeight="1"
        android:layout_gravity="center">
 
        <RadioButton
            android:id="@+id/r1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_rowWeight="1"
            android:layout_columnWeight="1"
            android:checked="false"
            android:text="×"
            android:textSize="36sp" />
 
        <RadioButton
            android:id="@+id/r2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_rowWeight="1"
            android:layout_columnWeight="1"
            android:checked="false"
            android:text="+"
            android:textSize="36sp" />
    </RadioGroup>
 
    <Button
        android:id="@+id/button3"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_row="4"
        android:layout_rowSpan="1"
        android:layout_rowWeight="1"
        android:layout_column="0"
        android:layout_columnSpan="1"
        android:layout_columnWeight="1"
        android:text="3"
        android:textSize="36sp" />
 
    <Button
        android:id="@+id/button4"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_rowSpan="1"
        android:layout_rowWeight="1"
        android:layout_columnSpan="1"
        android:layout_columnWeight="1"
        android:text="DEL"
        android:textSize="36sp" />
 
    <Button
        android:id="@+id/button5"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_row="5"
        android:layout_rowSpan="1"
        android:layout_rowWeight="1"
        android:layout_column="0"
        android:layout_columnSpan="2"
        android:layout_columnWeight="1"
        android:text="="
        android:textSize="36sp" />
 
</GridLayout>
package com.example.lenovo.clc231b;
 
import androidx.appcompat.app.AppCompatActivity;
 
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.view.View.OnClickListener;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;
 
public class MainActivity extends AppCompatActivity {
 
    private String num = "";
    private String num_zong = "";
    private int fore,back,lenth,id;
    TextView textview1;
    RadioGroup question2;
    Button button1;
    Button button2;
    Button button3;
    Button button4;
    Button button5;
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        textview1=(TextView)findViewById(R.id.textview1);
 
        button1 = (Button)findViewById(R.id.button1);
        button2 = (Button)findViewById(R.id.button2);
        button3 = (Button)findViewById(R.id.button3);
        button4 = (Button)findViewById(R.id.button4);
        button5 = (Button)findViewById(R.id.button5);
        question2 = (RadioGroup) findViewById(R.id.radioGroup2);
 
        button1.setOnClickListener(listener);
        button2.setOnClickListener(listener);
        button3.setOnClickListener(listener);
        button4.setOnClickListener(listener);
        button5.setOnClickListener(listener);
        question2.setOnClickListener(listener);
 
    }
 
    public OnClickListener listener = new OnClickListener() {
        @Override
        public void onClick(View view) {
            switch (view.getId()){
                case R.id.button1:
                    number(1);
                    break;
                case R.id.button2:
                    number(2);
                    break;
                case R.id.button3:
                    number(3);
                    break;
                case R.id.button4:
                    delete();
                    break;
                case R.id.button5:
                    result();
                    break;
                default:
                    break;
            }
 
            question2.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
                @Override
                public void onCheckedChanged(RadioGroup group, int checkedId) {
                    //獲取被選擇的單選按鈕
                    RadioButton r = (RadioButton) findViewById(checkedId);
                    //Toast.makeText(MainActivity.this,"你的愛好是:" + r.getText(), Toast.LENGTH_SHORT).show();
                    id = r.getId();
                    textview1.setText(num + r.getText());
                    fore = Integer.valueOf(num);
                    num = num+ r.getText();
                    lenth = num.length();
                }
            });
            textview1.setText(num);
        }
    };
//乘號id是2131165311  加號id是2131165312
    private void result()
    {
        num_zong = num;
        num = num.substring(lenth);
        back = Integer.valueOf(num);
        if(id == 2131165311)
            num = String.valueOf((fore*back));
        else
            num = String.valueOf((fore+back));
        num = num_zong + "=" + num;
    }
 
    private void delete(){
        num = num.substring(0,num.length()-1);
    }
 
    private void number(int i){
        num = num + i;
    }
}

四、總結

運行必須按照流程來,不然app會崩潰,不想改瞭,累瞭,對我這樣的新手不太友好。

五、參考文章

 (更新後,更改瞭一些參數定義名稱,更加直觀,更改瞭一些函數內容,減少冗餘度)

以上就是本文的全部內容,希望對大傢的學習有所幫助,也希望大傢多多支持WalkonNet。

推薦閱讀: