안드로이드 학습(Compose)

안드로이드 Compose와 기존 방식(XML + View) 비교

리저브콜드브루 2025. 3. 4. 10:13
728x90
반응형

UI 구성 방식

  • 기존 방식 (XML + View)
    • UI를 XML 파일로 정의하고, Java/Kotlin 코드에서 findViewById()로 참조하여 수정함
    • View는 상태를 직접 변경해야 하며, 변경된 내용을 적용하려면 명시적으로 업데이트해야 함
  • Jetpack Compose
    • 코틀린 코드로 UI를 선언형 방식으로 작성함
    • @Composable 함수를 사용하여 UI를 구성하며, 상태 변화에 따라 자동으로 UI가 업데이트됨 (즉, findViewById()가 필요 없음)

UI 업데이트 방식

  • 기존 방식
    • UI가 변경될 때 View를 찾고 값을 변경
    • textView.text = "Hello"
  • Compose 방식
    • 상태 변화를 감지하여 UI를 자동으로 재구성
    • remembermutableStateOf를 사용하여 상태 변화를 감지할 수 있음
var text by remember { mutableStateOf("Hello") }
Text(text = text)

UI 요소 배치

  • 기존 방식
    • LinearLayout, ConstraintLayout 등의 XML 레이아웃을 사용하여 UI 배치를 정의
  • Compose 방식
    • Column, Row, Box 등의 Composable 함수를 사용하여 UI 배치를 코드로 작성
    • XML 없이 UI가 선언형 방식으로 구성

리스트 및 RecyclerView 비교

  • 기존 방식 (RecyclerView)
    • RecyclerView + Adapter + ViewHolder 구조를 사용
    • View를 재활용하여 성능 최적화
  • Compose 방식 (LazyColum)
    • LazyColum을 사용해 간단히 리스트 구현
    • ViewHolder가 필요 없이 데이터 변화에 따라 자동으로 UI 업데이트
LazyColumn {
    items(listOf("Item1", "Item2", "Item3")) { item ->
        Text(text = item)
    }
}

Lifecycle 및 상태 관리

  • 기존 방식
    • onCreate(), onStart() 등의 라이프사이클 메서드를 활용하여 상태 관리
    • LiveData 또는 ViewModel과 함께 UI 업데이트
  • Compose 방식
    • remember, LaunchedEffect, SideEffect 등을 활용하여 상태 및 사이드 이펙트를 관리
    • UI 요소가 직접 상태를 가질 수 있음

Compose의 장점

  1. 코드량이 줄어듦
  2. 상태 기반 UI 자동 업데이트
  3. XML과 코드가 분리되지 않고 하나의 파일에서 관리
  4. RecyclerView보다 LazyColum을 활용한 리스트 구현이 간편
728x90
반응형

'안드로이드 학습(Compose)' 카테고리의 다른 글

LazyColumn, LazyRow의 특징 및 사용  (0) 2025.03.04
상태 호이스팅  (0) 2025.03.04
Compose에서의 상태  (0) 2025.03.04
열과 행 만들기  (0) 2025.03.04
간단한 버튼 동작 구현해보기  (0) 2025.03.04