Compose Platform Views & Interop
Compose Platform Views & Interop
1. AndroidView in Compose
AndroidView(
factory = { context ->
TextView(context).apply { text = "Legacy View" }
},
update = { view ->
view.text = "Updated"
}
)
- Compose 트리 안에 기존 View 삽입
- LocalContext, LocalDensity를 활용해 크기/스타일 동기화 가능
2. ComposeView in View Hierarchy
XML 또는 코드에서 ComposeView 사용:
<androidx.compose.ui.platform.ComposeView
android:id="@+id/compose_view"
... />
composeView.setContent {
MyComposeContent()
}
ComposeView 내부에서 CompositionLocal이 설정된다.
CompositionLocal is tied to the content inside ComposeView.
3. CompositionLocal과 View 계층 상호작용
- LocalView.current는 ComposeView 또는 host View를 반환
- LocalContext.current는 해당 View의 Context를 반환
- AndroidView 내부에서는 View 세계와 Compose 세계를 연결하는 bridge 역할
4. Interop 모범 사례
- ViewModel은 양쪽에서 공동 사용
- shared data는 Flow/LiveData로 노출
- Compose는 관찰자 역할, View는 producer or peer
CompositionLocal은 주로 Compose side의 환경전달용으로 사용.