MainActivity.java 살펴보기

  • 전체 창은 왼쪽 가운데, 그리고 오른쪽 부분으로 구분되어 있다. 그중 가운데 부분에는 두 개의 탭이 있다. [MainActivity.java]는 자바 소스 파일이다. 생성한 안드로이드 프로젝트에서는 자바 언어를 사용하기 때문에 java라는 확장자를 가진 파일이 만들어지며 표준 자바의 문법으로 작성되어 있다. 그래서 자바로 프로그램을 만들어 본 경험이 있다면 이 파일이 많이 익숙할 것이다. 그러나 자세히 코드를 살펴보면 평범한 자바 프로그램과 형태가 조금 다르다는 것을 알 수 있다.

 

package com.example.myapplication;

import android.os.Bundle;

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;
        });
    }
}

 

코드를 살펴보자

  • super.onCreate(savedInstanceState) : 기본 초기화를 수행
  • EdgeToEdge.enable(this) :  앱의 화면을 가장자리까지 확장하는 기능을 활성화 -> 앱이 디바이스 화면의 가장자리 까지 찬다는 의미
  • setContentView(R.layout.activity_main) : activity_main 레이아웃을 화면에 보여준다.
  • ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
                Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars()) :  main이라는 ID를 가진 뷰에 대해 WindowInsets(시스템UI)를 적용하는 리스너를 설정한다.
                            
  • v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
                return insets;
            }); : 뷰의 패딩을 시스템 바의 크기에 맞게 설정한다. 이렇게하면 시스템 바가 화면에 표시될 때 뷰의 내용이 잘리지 않는다.

 

activity_main.xml 살펴보기

  • 왼쪽 하얀색 화면: 실제 스마트폰 화면에 나타날 디자인 화면(Design)
  • 오른쪽 남색 화면은 화면의 구성 요소만을 보여주는 청사진(Blue Print)이다.

흰색 화면만 남게하기

 

파란색 마름모 버튼을 누른 후 영역 선택을 하면 보여질 화면만 볼 수 있다.