본문 바로가기

layoutnode

[ComposeInternals] 컴포즈 UI (Compose UI) - (3) Layout Constraints (제약 조건) Jetpack Compose Internals를 참고하여 작성하였습니다  레이아웃 제약 조건 (Layout Constraints)제약 조건은 부모 LayoutNode나 modifier로부터 올 수 있다자식 레이아웃을 측정하기 위해 제약 조건을 사용한다 대부분의 레이아웃은 1. 자식에게 수정되지 않은 제약 조건을 전달하거나 2. 최소 제약 조건을 완화한다 (0으로 설정) -> Box 부모 노드나 modifier는 자식에게 크기가 얼마인지 묻기도 한다이 경우 무한한 제약 조건을 내려보낼 수 있다 (Constraints.Infinity)자식 컴포넌트가 자신의 크기를 결정할 수 있는 자유가 부여된다  예시) Box Composable// 일반적으로 Box는 부모의 전체 높이를 채움// LazyColumn 안에서.. 더보기
[ComposeInternals] 컴포즈 UI (Compose UI) - (2) Measure(측정) Jetpack Compose Internals를 참고하여 작성하였습니다  Compose UI에서의 측정 (Measuring in Compose UI)실제 측정이 어떻게 이뤄지는가 모든 LayoutNode는 Owner를 통해 재측정을 요청할 수 있다요청 시 Owner(뷰)는 "dirty"로 표시(invalidate)되며 노드는 재측정 및 재배치할 노드 목록에 추가된다다음 그리기 시점에 AndroidComposeView의 dispatchDraw 함수가 호출된다AndroidComposeView는 재측정 및 재배치할 노드 목록을 순회하고 해당 작업 수행 재측정 및 재배치가 예정된 노드에 적용되는 3가지 단계노드가 재측정이 필요한지 확인 후 재측정 수행측정 후, 재배치가 필요한지 확인 후 재배치 수행모든 노드에 .. 더보기
[ComposeInternals] 컴포즈 UI (Compose UI) - (1) Jetpack Compose Internals를 참고하여 작성하였습니다 Compose UIKotlin 멀티플랫폼 프레임워크이며 Composable 함수를 통해 UI를 방출하는 구현을 제공 Compose Runtime과 UI를 통합할 때의 목표화면의 레이아웃 트리를 구축하는 것 트리에 사용되는 노드 타입은 Compose UI만 알고 런타임은 알지 못한다그래서 런타임은 트리에서 노드의 작업(삽입, 제거, 이동 등)을 Client 라이브러리에 위임 초기 Composition 과정에서는 변경 목록이 모든 노드를 삽입하여 레이아웃 트리를 구축하고Recomposition 과정에서 변경 목록은 트리를 업데이트 한다 이 과정에 대해 자세히 살펴보자 예약된 변경 목록을 실제 트리의 변경 목록으로 매핑(Mapping sc.. 더보기