[Compose] Jetpack Compose 상태 관리 기초
·
Android/Compose
이번 글에서는 remember, rememberSaveable, State, MutableState, SnapshotStateList, 그리고 ViewModel에 대해 알아보겠습니다.  🌟 remember: 컴포저블 내에서 상태를 기억하기remember는 컴포저블 함수가 재구성될 때 값을 기억하도록 돕는 유틸리티입니다.이 함수를 사용하면 재구성(recomposition) 중에도 값이 초기화되지 않고 유지됩니다.@Composablefun MyComposable() { val count = remember { mutableStateOf(0) } Button(onClick = { count.value++ }) { Text("Count: ${count.value}") }}위 코드에..
[Compose] Android Composable Lifecycle
·
Android/Compose
⏳ 수명 주기 개요 Composable 함수는 UI를 화면에 렌더링 하기 위해 여러 번 호출될 수 있습니다.이 호출들은 각기 다른 수명 주기를 가지며, 이 주기들을 이해하면 성능을 최적화하고 예기치 않은 버그를 피할 수 있습니다.💡 주요 수명 주기 단계Initial Composition: 처음 UI가 컴포지션될 때, Composable 함수가 호출됩니다.Recomposition: 상태 변화 등으로 인해 UI가 갱신되어야 할 때, 해당 Composable 함수가 다시 호출됩니다.Skipping Recomposition: 입력이 변경되지 않으면 리컴포지션이 건너뛰어집니다.Disposal: UI가 더 이상 필요하지 않을 때, 자원이 해제됩니다. 🔍 컴포지션 내 컴포저블의 분석컴포지션 내 컴포저블의 인스턴스..
[Compose] Slot-based Layouts
·
Android/Compose
Compose는 UI를 쉽게 빌드할 수 있도록 Material Design 및 Android Studio에서 Compose 프로젝트를 만들 때 포함되는 androidx.compose.material:material 종속 항목을 기반으로 한 다양한 Composable을 제공합니다.Drawer, FloatingActionButton 및 TopAppBar와 같은 요소가 모두 제공됩니다. Slot API의 개념Compose는 Composable 위에 맞춤설정 레이어를 배치하기 위해 Slot API라는 패턴을 사용합니다.이 접근 방식은 하위 요소의 모든 구성 매개변수를 노출하지 않고도 자체적으로 하위 요소를 구성할 수 있게 하여 구성 요소의 유연성을 향상합니다.슬롯: 개발자가 원하는 대로 UI에 빈 공간을 남기고..
[Compose] BottomNavigation 사용방법
·
Android/Compose
안드로이드 Compose에서 BottomNavigation은 앱의 주요 내비게이션을 제공하는 중요한 UI 컴포넌트입니다.이 글에서는 BottomNavigation의 사용 방법, 커스터마이징 방법, 그리고 BottomNavigationRail에 대해 알아보겠습니다. BottomNavigation은 화면 하단에 위치하여 사용자가 앱 내에서 다른 화면으로 쉽게 이동할 수 있도록 도와주는 UI 요소입니다. 일반적으로 여러 아이콘과 텍스트 레이블로 구성되어 있으며, 각 아이콘은 특정 기능이나 화면으로 연결됩니다. BottomNavigation 사용 방법 🛠️@Composablefun MyBottomNavigation() { val items = listOf("Home", "Search", "Profile"..
[Compose] LazyListScope
·
Android/Compose
RecyclerView 대신 Compose에서는 Lazy Lists를 사용합니다.LazyColumn, LazyRow, LazyGrid는 대량의 데이터를 효율적으로 표시하는 데 특화된 컴포넌트입니다.  LazyListScopeLazyListScope는 LazyColumn과 LazyRow에서 항목을 정의할 때 사용하는 DSL(도메인 특정 언어)입니다. 스코프는 리스트의 항목을 추가하고 구성할 수 있는 다양한 함수들을 제공합니다. 이를 통해 코드의 가독성을 높이고, 리스트 항목을 더 쉽게 관리할 수 있습니다. @LazyScopeMarker@JvmDefaultWithCompatibilityinterface LazyListScope { fun item( key: Any? = null, ..
[Compose] State Hoisting
·
Android/Compose
상태 호이스팅(State Hoisting) 🌊Compose의 장점 중 하나인 Stateless함에 대해 이야기해보려고 합니다.UI 상태의 상호 의존성을 끊을 수 있다면 UI의 재사용성이 높아지고, 테스트하기도 쉬워지기 때문이죠. 하지만 때때로 UI에 상태를 저장해야 하는 상황도 발생합니다.예를 들어, TextField와 같은 컴포넌트는 입력된 텍스트를 저장해야 하므로 상태를 가져야 합니다. 이런 경우, Compose의 Stateless한 장점이 사라지고 다시 Stateful하게 됩니다.이를 해결하기 위한 디자인 패턴이 바로 상태 호이스팅(State Hoisting)입니다. 🚀 상태 호이스팅이란?상태 호이스팅은 상태를 자식 컴포넌트에서 부모 컴포넌트로 끌어올리는 패턴입니다.이를 통해 상태를 여러 컴포넌..