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代碼

<?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>
View Code

4.原來的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.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;
    }
}
View Code

 

四、總結

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

五、參考文章

 (3月24號更新)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM