본문 바로가기
Android/Java

[Android / Java] 덧셈 계산기 만들기

by ghan2 2024. 5. 30.

안드로이드 스튜디오 입문..!!

https://youtu.be/rMGQIIay47w?feature=shared 영상을 참고했다.

 

안드로이드 스튜디오는 xml로 화면을 구성하고 .java 파일로 세부 기능을 구현한다.

TextView, Button, EditText

TextView는 화면에 텍스트를 표시하는 기능을 담당하며, 안드로이드에서 제공하는 위젯 중 가장 많이 사용되는 위젯이다. 텍스트 출력 기능을 가진 기본 위젯이므로, 텍스트와 연관된 기능을 포함하는 Button 또는 EditText의 부모 클래스이기도 하다.

Button은 클릭 이벤트를 발생시킬 수 있고 EditText는 input처럼 입력을 담당한다.

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <EditText
        android:id="@+id/activity_main__editTextNum1"
        android:layout_width="match_parent" //너비 100%
        android:layout_height="wrap_content" // 높이 최소화
        android:hint="숫자를 입력해주세요."
        android:inputType="numberDecimal" />

    <EditText
        android:id="@+id/activity_main__editTextNum2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="숫자를 입력해주세요." //html의 placeholder처럼 입력창에 미리 보여진다.
        android:inputType="numberDecimal" /> //input 자료형을 지정할 수 있다.

    <Button
        android:onClick="btnAddClicked"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="더하기" />

    <Button
        android:onClick="btnClearClicked" //click 이벤트를 발생시킬 수 있다. --표시가 그어졌었는데 지금도 사용하는지 더 알아보자
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="지우기" />

    <TextView
        android:id="@+id/activity_main__textViewRs"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />


</LinearLayout>
package com.example.study_3;

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

import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        EdgeToEdge.enable(this);
        setContentView(R.layout.activity_main);
        ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
            Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
            v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
            return insets;
        });
    }

    public void btnAddClicked(View view) {
        EditText num1 = findViewById(R.id.activity_main__editTextNum1); //js처럼 아이디 값으로 요소를 가져온다.
        EditText num2 = findViewById(R.id.activity_main__editTextNum2);
        TextView rs = findViewById(R.id.activity_main__textViewRs);

        if(num1.getText().toString().isEmpty() || num2.getText().toString().isEmpty()) {
            toastMsg("숫자를 입력해주세요.");
            return;
        }

        int result = Integer.parseInt(num1.getText().toString().trim()) + Integer.parseInt(num2.getText().toString().trim());
        rs.setText("결과: " + result);
        toastMsg("결과: " + rs);
    }

    private void toastMsg(String msg) {
        Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_SHORT).show();
    }

    public void btnClearClicked(View view) {
        EditText num1 = findViewById(R.id.activity_main__editTextNum1);
        EditText num2 = findViewById(R.id.activity_main__editTextNum2);
        TextView rs = findViewById(R.id.activity_main__textViewRs);

        num1.setText("");
        num2.setText("");
        rs.setText("");
    }
}

초기 화면
결과 화면

Android Message

- Toast : 일정 시간이 지나면 자동으로 사라짐 -> 현재는 유사한 snackbar 와 함께 사용

- Dialog : Activity 위에 나타남

- Notification : 알림창에 표시

Toast

  • 간단하게 메세지 표시 
  • 현재 실행되고 있는 화면과 관련 X -> os에게 메세지 출력 요청해 나타남
  • 단말기 내의 모든 앱, 구성요소가 요청 가능 
  • 요청 순서대로 메세지 나타남

주요 메서드, 프로퍼티

  • makeText : Toast 메시지 객체 생성, 화면 모양/글자크기/색상 등은 기본 설정된 것 사용 *meterial 로 수정 가능한지 확인
  • setGravity : Toast 메세지 표시될 위치 설정
  • view : 보여줄 View를 설정할 수 있어 Toast 메세지를 커스터마이징 => 안드11부터 deprecated 되어서 SnackBar 사용 추천
  • Duration : 메세지가 표시되는 시간을 설정 

참고: https://studyroadmap-kkm.tistory.com/102