[Android] Jetpack Compose

김상익·2023년 3월 1일
0

Jetpack Compose

목록 보기
1/1

링크텍스트

Compose 란?

  • Android를 위한 현대적인 선언형 UI 도구 키트. Compose는
    SwiftUI 나 Flutter 과 같이 선언형 API를 제공한다. 즉 기존의 명령형 UI인 XML과 다른 방식으로 UI 를 구성한다.

명령형 vs 선언형

  • Compose 는 선언형 UI 라고 하였다. 그러면 명령형과 선언형의 차이점은 무엇일까.

친구에게 현재 위치에서 우리 집에 오는 방법을 설명하고자 한다면

명령형

앞 사거리에서 좌회전 받아서 CU가 보일 때 까지 직진하다가 CU 를 끼고 우회전 후에 유턴하고...

선언형

우리 집 주소는 00로 20 ㅇㅇ아파트 101동 1101호야

쉽게 보면 위와 같이 이해할 수 있다.

RecyclerView vs LazyColumn

기존 XML 방식은 findViewById() 함수로 탐색하고 button.setText(String), container.addChild(View) 와 같은 메서드를 호출하고 등등 오류 발생 가능성이 높다. 또한 보일러플레이트 코드가 많다.

기존 RecyclerView 는 구현을 위해 너무나도 분산되어 있다. Adapter, item view, item 의 layout, RecyclerView 의 Layout 등 처음 구현할 때 정말 많은 시간을 잡아먹었다. 이렇게 분산되어 있는 코드는 유지보수도 쉽지 않다.

하지만 Compose 와 함께라면 더욱 쉬운 구현이 가능하다

예시) LazyColumn 원문

@Composable
fun LazyColumn(
    modifier: Modifier = Modifier,
    state: LazyListState = rememberLazyListState(),
    contentPadding: PaddingValues = PaddingValues(0.dp),
    reverseLayout: Boolean = false,
    verticalArrangement: Arrangement.Vertical = if (!reverseLayout) Arrangement.Top else Arrangement.Bottom,
    horizontalAlignment: Alignment.Horizontal = Alignment.Start,
    flingBehavior: FlingBehavior = ScrollableDefaults.flingBehavior(),
    userScrollEnabled: Boolean = true,
    content: LazyListScope.() -> Unit
): Unit

정리

위와 같이 Compose 의 장점은 간단히 다음과 같다

  1. 코드 감소
  2. 직관적인 API
  3. 빠른 개발 과정
  4. 강력한 성능

0개의 댓글