안드로이드 개발을 할때 코드(Java, Kotlin)파일과 XML Layout파일을 분리시키는것을 알 수 있다. 그리고 소스코드에 setContentView메소드를 이용해 해당 코드와 같이 사용할 전체 레이아웃을 지정하곤 한다. setContentView에 지정할때 R.layout.(확장자 없이 레이아웃 파일 이름만) 과 같이 지정하는데, 여기서 R 클래스는 프로젝트 창의 "res"폴더를 의미하는 클래스이며 각 리소스에 id가 배정되는 클래스이다. 즉, R.layout 이라고 하면 res/layout이라는 의미이다. 다른 예시로 R.id라고 하면, 이 프로젝트 내에 생성된 리소스들 중 특정 id를 지정하는 것을 의미한다.
https://developer.android.com/reference/android/R
Infaltion(인플레이션)
앱이 실행되면,XML레이아웃의 내용이 메모리에 객체화되고, 객체화된 XML레이아웃을 소스파일에서 사용한다. 여기서 XML레이아웃의 내용이 메모리에 객체화 되는 과정을 "Inflation"이라고 하며, 이는 앱이 실행되는 시점에 발생된다.
우리가 프로젝트 파일을 기본생성하면 소스코드에 setContentView()라는 메소드가 있다. 이는 MainActivity클래스가 상속받는 AppCompatActivity 클래스에 정의되어있는 메소드이며, setContentView()는 매개변수로 레이아웃을 지정해서 소스코드와 레이아웃을 연결한다. 이 setContentView()메소드가 매개변수로 넘겨진 레이아웃의 View들을 메모리에 객체화될 수 있도록 하는것이다.
이러한 점으로 잊지 말아야할 것은, setContentView를 시점으로 레이아웃이 메모리에 객체화 되기때문에,View객체의 조작은 setContentView메소드 호출 이후가 되어야 한다.
'Android' 카테고리의 다른 글
[Android] 여러 화면간 전환하기 (0) | 2022.04.08 |
---|---|
[Android] LayoutInflator사용해 보기 (0) | 2022.04.08 |
[Android] Progressbar 사용하기 (0) | 2022.04.07 |
[Android] Snackbar사용하기 (0) | 2022.04.07 |
[Android] AlertDialog를 응용해보기 (0) | 2022.04.07 |