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의 환경전달용으로 사용.