안드로이드 스튜디오 초 간단 계산기 앱 만들기

안녕하세요 오늘은 초 간단 계산기 앱을 만들어 보겠습니다.

 

테이블 레이아웃을 이용하여 숫자 버튼을 만들어서 앱을 제작해 보겠습니다.

 

별 다른 코드 안 들어가고 아주 간단한 계산기 예제 이므로 쉽게 따라하실수 있습니다.

 

일단 프로젝트를 만들고 레이아웃을 꾸며 보겠습니다.

 

밑에는 xml 코딩입니다 레이아웃을 꾸미는 것이기 때문에 취향에 맞게 

 

색상이나 이름을 바꾸셔도 상관없습니다. 저는 이렇게 꾸몄습니다

 

<?xml version="1.0" encoding="utf-8"?>
<TableLayout 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:background="#0599BE"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <TableRow>

        <EditText
            android:id="@+id/Edit1"
            android:layout_weight="5"

            android:hint="숫자1 입력" />
    </TableRow>

    <TableRow>
        <EditText
            android:id="@+id/Edit2"
            android:layout_weight="5"
            android:hint="숫자2 입력" />
    </TableRow>

    <TableRow
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <Button
            android:background="#FFFFFF"
            android:id="@+id/BtnNum7"
            android:layout_gravity="center"
            android:text="7" />

        <Button
            android:background="#FFFFFF"
            android:id="@+id/BtnNum8"
            android:layout_width="221dp"
            android:layout_gravity="center"
            android:text="8" />

        <Button
            android:background="#FFFFFF"
            android:id="@+id/BtnNum9"
            android:layout_gravity="center"
            android:text="9" />


    </TableRow>
<TextView/>
    <TableRow>
        <Button
            android:background="#FFFFFF"
            android:layout_gravity="center"
            android:id="@+id/BtnNum4"
            android:text="4"/>
        <Button
            android:background="#FFFFFF"
            android:layout_gravity="center"
            android:id="@+id/BtnNum5"
            android:text="5"/>
        <Button
            android:background="#FFFFFF"
            android:layout_gravity="center"
            android:id="@+id/BtnNum6"
            android:text="6"/>

    </TableRow>
    <TextView/>
    <TableRow>
        <Button
            android:background="#FFFFFF"
            android:layout_gravity="center"
            android:id="@+id/BtnNum1"
            android:text="1"/>
        <Button
            android:background="#FFFFFF"
            android:layout_gravity="center"
            android:id="@+id/BtnNum2"
            android:text="2"/>
        <Button
            android:background="#FFFFFF"
            android:layout_gravity="center"
            android:id="@+id/BtnNum3"
            android:text="3"/>

    </TableRow>
    <TextView/>
<LinearLayout>

    <Button
        android:layout_weight="5"
        android:id="@+id/BtnNum0"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="#FFFFFF"
        android:layout_margin="5dp"
        android:text="0" />
</LinearLayout>


    <TableRow>
        <Button
            android:background="#FFFFFF"
            android:layout_weight="5"
            android:id="@+id/BtnAdd"
            android:layout_margin="5dp"
            android:textSize="20dp"
            android:text="더하기"/>
    </TableRow>
    <TableRow>
        <Button
            android:background="#FFFFFF"
            android:layout_weight="5"
            android:id="@+id/BtnSub"
            android:textSize="20dp"
            android:layout_margin="5dp"
            android:text="빼기"/>
    </TableRow>
    <TableRow>
        <Button
            android:background="#FFFFFF"
            android:layout_weight="5"
            android:id="@+id/BtnMul"
            android:textSize="20dp"
            android:layout_margin="5dp"
            android:text="곱하기"/>
    </TableRow>
    <TableRow>
        <Button
            android:background="#FFFFFF"
            android:layout_weight="5"
            android:id="@+id/BtnDiv"
            android:layout_margin="5dp"
            android:textSize="20dp"
            android:text="나누기"/>
    </TableRow>
    <TableRow>
        <TextView
            android:id="@+id/TextResult"
            android:layout_margin="5dp"
            android:layout_span="5"
            android:text="계산 결과 : "
            android:textColor="#FF0000"
            android:textSize="35dp"/>
    </TableRow>

</TableLayout>

위에 코드를 다 넣으시면 이런 화면으로 레이아웃이 구성이 되었을 겁니다.

 

완성된 레이아웃

아주 심플하고 간단하네요 이제 자바 코드를 넣어보겠습니다

 

밑에는 자바 풀 소스입니다. 

 

  • 숫자 버튼을 제외한 activity_main.xml의 7개의 위젯에 대응할 위젯 변수 7개

  • 입력될 2개 문자열을 저장할 문자열 변수 2개

  • 계산 결과를 저장할 정수 변수 1개

  • 10개 숫자 버튼을 저장할 버튼 배열

  • 10개 버튼의 id를 저장할 정수형 배열

  • 증가 값으로 사용할 정수 변수

package com.example.myapplication10;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
    EditText edit1, edit2;
    Button btnAdd, btnSub, btnMul, btnDiv;
    TextView textResult;
    String num1, num2;
    Integer result;
    Button[] numButtons = new Button[10];
    Integer[] numBtnIDs = {R.id.BtnNum0, R.id.BtnNum1, R.id.BtnNum2, R.id.BtnNum3, R.id.BtnNum4, R.id.BtnNum5, R.id.BtnNum6, R.id.BtnNum7, R.id.BtnNum8, R.id.BtnNum9};
    int i;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        setTitle("초간단 계산기");

        edit1 = (EditText) findViewById(R.id.Edit1);
        edit2 = (EditText) findViewById(R.id.Edit2);
        btnAdd = (Button) findViewById(R.id.BtnAdd);
        btnSub = (Button) findViewById(R.id.BtnSub);
        btnMul = (Button) findViewById(R.id.BtnMul);
        btnDiv = (Button) findViewById(R.id.BtnDiv);
        textResult = (TextView) findViewById(R.id.TextResult);

        btnAdd.setOnTouchListener(new View.OnTouchListener() {
            public boolean onTouch(View arg0, MotionEvent arg1){
                num1 = edit1.getText().toString();
                num2 = edit2.getText().toString();
                result = Integer.parseInt(num1) + Integer.parseInt(num2);
                textResult.setText("계산 결과 : "+ result.toString());
                return  false;
            }
        });
        btnSub.setOnTouchListener(new View.OnTouchListener() {
            public boolean onTouch(View arg0, MotionEvent arg1){
                num1 = edit1.getText().toString();
                num2 = edit2.getText().toString();
                result = Integer.parseInt(num1) - Integer.parseInt(num2);
                textResult.setText("계산 결과 : "+ result.toString());
                return  false;
            }
        });

        btnMul.setOnTouchListener(new View.OnTouchListener() {
            public boolean onTouch(View arg0, MotionEvent arg1){
                num1 = edit1.getText().toString();
                num2 = edit2.getText().toString();
                result = Integer.parseInt(num1) * Integer.parseInt(num2);
                textResult.setText("계산 결과 : "+ result.toString());
                return  false;
            }
        });

        btnDiv.setOnTouchListener(new View.OnTouchListener() {
            public boolean onTouch(View arg0, MotionEvent arg1){
                num1 = edit1.getText().toString();
                num2 = edit2.getText().toString();
                result = Integer.parseInt(num1) / Integer.parseInt(num2);
                textResult.setText("계산 결과 : "+ result.toString());
                return  false;
            }
        });
        for (i = 0; i <numBtnIDs.length; i++) {
            numButtons[i] = (Button) findViewById(numBtnIDs[i]);
        }
        for (i = 0; i <numBtnIDs.length; i++){
            final int index; //꼭 필요함
        index = i;

        numButtons[index].setOnClickListener(new View.OnClickListener(){
            public void onClick(View view){
                if (edit1.isFocused() == true){
                    num1 = edit1.getText().toString()
                            + numButtons[index].getText().toString();
                    edit1.setText(num1);
                }else if (edit2.isFocused() == true){
                    num2 = edit2.getText().toString()
                            + numButtons[index].getText().toString();
                    edit2.setText(num2);
                }else {
                    Toast.makeText(getApplicationContext(),"먼저 에디트텍스트를 선택하세요", Toast.LENGTH_SHORT).show();
                }
            }
        });
        }
    }

}

 

이렇게 코드 작성을 다 하시고 실행하시면 초간단 계산기가 완성이 됩니다.

 

에디트 텍스트의 숫자 1과 숫자 2에 숫자를 넣고

 

더하기, 빼기, 곱하기, 나누기 중에 계산하고 싶은데로 눌러주면

 

계산이 됩니다. 그리고 계산된 숫자는 계산 결과에 나옵니다.

 

수고하셨습니다.

 

댓글

Designed by JB FACTORY