
Android에서 화면을 그리는 방법

Window마다 각각 Surface를 갖는데, 이 Surface에 view들을 Canvas에 그리는 방식

//setContentView()함수들
public abstract void setContentView (View view,
ViewGroup.LayoutParams params)
public abstract void setContentView (View view)
public abstract void setContentView (int layoutResID)

화면 내용을 명시적 view로 설정합니다. 이 view는 화면의 view 계층 구조에 직접 배치됩니다.
DecorView 란?

Activity 에서 setContentView로 화면을 연결할 때, 안드로이드는 Activity Window에 Activity 뷰를 add

DecorView는 PhoneWindow의 inner 클래스이며 Activity에 대한 View 계층의 root container로, FrameLayout을 extend한 것.

이 계층 구조는 "Decor"(즉, 윈도우 제목)를 모두 포함하며, 내용 보기도 포함.
DecorView에서 getWindow().setBackgroundDrawable(Drawable drawable)를 Activity에서 호출해서 window의 background를 변경 할 수 있음.
ActivityManagerService는 ActivityThread를 호출하여 액티비티 런치. ActivityThread.performLaunchActivity()에서 Activity인스턴스 생성하고 activity.attach() 호출
Activity는 attach()에서 PhoneWindow 객체 생성. 이 PhoneWindow는 액티비티내 뷰들의 root로서 DecorView 인스턴스 포함.
mWindow = PolicyManager.makeNewWindow(this);
ActivityManagerService는 ActivityThread를 호출하여 액티비티를 resume시킴.
WindowManager 인스턴스가 생성되고 decorView가 WindowManager에 추가됨.
ActivityThread.handleResumeActivity()
WindowManager의 addView(decor)에서 ViewRoot 인스턴스를 생성하고 viewRoot.setView(decor) 호출
viewroot.setView(decor)에서 IWindowSession을 통해 WindowManagerService에 IWindow인스턴스를 추가
IWindowSession.add(window)
Decor View는 언제 사용?

-> 상태 줄이 투명
activity.window.apply {
clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)
addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS)
decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
statusBarColor = Color.TRANSPARENT
}
https://medium.com/@MrAndroid/android-window-basic-concepts-a11d6fcaaf3f
https://ecogeo.tistory.com/251 [아키텍트를 꿈꾸며 - 에코지오:티스토리]
https://developer.android.com/reference/android/view/WindowManager.LayoutParams [WindowManager.LayoutParams]
https://colinch4.github.io/2020-12-01/Android%EB%8A%94-%EC%96%B4%EB%96%BB%EA%B2%8C-UI%EB%A5%BC-%EA%B5%AC%EC%84%B1%ED%95%A0%EA%B9%8C(1)-Inflate/ [[안드로이드 기초] Android는 어떻게 UI를 구성할까?(1) - Inflate]
https://proandroiddev.com/android-full-screen-ui-with-transparent-status-bar-ef52f3adde63 [Android: Full Screen UI with Transparent Status Bar]