[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)입니다. 🚀 상태 호이스팅이란?상태 호이스팅은 상태를 자식 컴포넌트에서 부모 컴포넌트로 끌어올리는 패턴입니다.이를 통해 상태를 여러 컴포넌..
Android DiffUtil과 ListAdapter 사용법 ✨
·
Android/ViewSystem
Android DiffUtil에 대한 이해와 활용 📱✨DiffUtil은 Android RecyclerView에서 데이터 변경을 효율적으로 처리하는 데 도움을 주는 유틸리티 클래스입니다. 이 글에서는 DiffUtil의 기본 개념, 사용 방법 및 예제 코드를 통해 그 활용법을 알아보겠습니다. DiffUtil이란? 🤔DiffUtil은 두 리스트 간의 차이를 계산하여 RecyclerView의 아이템을 효율적으로 업데이트합니다. 이를 통해 불필요한 전체 리스트의 갱신을 방지하고, 성능을 개선할 수 있습니다. 왜 DiffUtil을 사용해야 할까요? ⚡성능 향상: 전체 리스트를 다시 그리지 않고 필요한 부분만 갱신합니다.애니메이션 효과: 변경된 아이템에 대해 부드러운 애니메이션을 제공합니다.쉬운 구현: 비교적 간..