What is Window?
하나의 뷰 계층을 가진 직사각형 영역, 하단의 직사각형들이 각각의 윈도우 영역
What are Characteristics of Window?
1. Activity에 의해 생성됨
3. 각각의 Activity는 User Interface를 그릴 수 있는 하나의 윈도우가 주어짐
4. Window의 Contents를 그릴 수 있는 하나의 Surface를 가짐
5. Surface는 view들을 가지고 있는 ViewGroup을 포함한다.
How interaction happens among the Window, Surface, Canvas, and Bitmap?
1. Suface는 lock이 되어있어서, 그 안에 그릴 수 있는 Canvas를 return
2. 원 또는 박스 등 그리는 방법에 대한 모든 로직은 Canvas 안에 포함
3. Canvas는 Surface에 쓸 수 없음
4. Canvas는 Bitmap 또는 열린 GL container에 그림
5. Bitmap은 만들어지고, Surface의 current drawing buffer를 가리킴. return된 Canvas에 이 Bitmap을 그려짐
6. Window는 Canvas가 붙어있는 view 계층을 가짐
7. draw 탐색은 view 계층 아래에서 수행되며, 각각의 뷰에 UI 일부분을 그리기 위해 이 Canvas를 전달
8. 완료되면, Surface는 unlock이 되고 게시가 됨
9. Surface Flinger는 그려진 버퍼를 사용하여 screen을 구성함
How is Hierarchy?
Application --->
Activity --->
Window Manager --->
Window --->
Surface --->
Canvas --->
View Root --->
View Group --->
View --->
Bitmap/Open GL panel --->
Current Surface Buffer --->
Surface Flinger --->
Screen
Reference