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를 자동으로 재구성
- remember와 mutableStateOf를 사용하여 상태 변화를 감지할 수 있음
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의 장점
- 코드량이 줄어듦
- 상태 기반 UI 자동 업데이트
- XML과 코드가 분리되지 않고 하나의 파일에서 관리
- 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 |