본문 바로가기

안드로이드 공부 노트/Compose(컴포즈)16

[Compose] 안드로이드 컴포즈 드롭다운 메뉴 만들기 (Android Compose DropdownMenu) - 예제를 통한 사용법 이번 포스팅은 은근 사용 하는 컴포즈의 드롭다운 만드는 법을 작성해 보겠다. 기존 XML에서는 어댑터도 만들고 리스너로 이벤트 처리를 해서 코드가 분산되어 흐름을 한눈에 보기 힘들었다.반면 컴포즈에서는 단일 함수 내에서 완전한 구현이 가능하기 때문에 많이 편리해졌다. 그럼 이제 사용법을 알아보자!# DropdownMenu@Composablefun DropdownMenu( expanded: Boolean, onDismissRequest: () -> Unit, modifier: Modifier = Modifier, offset: DpOffset = DpOffset(0.dp, 0.dp), scrollState: ScrollState = rememberScrollState(), .. 2025. 2. 28.
[Android-Compose] Compose 렌더링 단계 알아보기 (Android Compose Rendering) 이번 포스팅은 Compose의 렌더링 단계를 알아보도록 하겠다.# 렌더링 단계우선 위 그림은 안드로이드 공식문서에 있는 렌더링 단계의 그림이다.렌더링 단계는 크게 총 3단계 컴포지션(Composeition), 레이아웃(Layout), 그리기(Drawing)로 나누어져 있다.이제 하나씩 알아가 보자!# 1. 컴포지션 (Composeition) 단계 - What 화면에 뭘 보여 줄지컴포지션 단계에서는 UI 코드를 노드 트리 구조로 변환/만드는 단계이다.해당 트리를 생성하면서 각 UI  컴포넌트의 계층 구조와 속성들을 파악하고 생성된 트리는 2단계인 레이아웃 단계에서 사용이 된다.이제 노드 트리 구조를 어떤 식으로 만드는지 아래 예제를 보자!Column { Image( painter = re.. 2025. 1. 30.
[Android-Compose] 컴포즈 NavHost에서 ViewModel 공유 예제를 통해 알아보기 - Screen끼리 공유 이번 포스팅은 Compose에서 NavHost 사용 시 다른 Screen끼리 ViewModel을 공유해야 할 상황이 생긴다.이때 ViewModel을 공유하는 방법을 포스팅해보겠다. 해결법을 바로 보고 싶으신 분은 결론으로 넘어가면 된다!# 예제이번 예제는 ScreenA와 ScreenB가 있고 같은 ViewModel를 사용해 데이터를 공유하는 상황이다.또한 DI 라이브러리를 사용 안 하는 상황프로세스를 자세히 표현하자면 아래와 같다.## Before 코드### MainActivityclass MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedI.. 2024. 12. 7.
[Android-Compose] 안드로이드 컴포즈 부수 효과 알아보기! (Android Compose DisposableEffect, SideEffect, produceState, derivedStateOf, snapshotFlow) - SideEffect - 2편 이번에는 1편에 이어서 Compose의 부수효과를 알아보도록 하자!# DisposableEffect✅ 키가 변경되거나 컴포저블이 컴포지션을 종료한 후 정리해야 하는 부수 효과를 처리해 주는 API - Composable의 생명주기에 맞춰 정리되어야 하는 리스너나 작업이 있는 경우에 리스너나 작업을 제거하기 위해 사용된다.- 제공된 키 값이 변경될 때마다 이전 효과를 정리하고 새로운 효과를 실행한다.- LaunchedEffect, onDestroy와 유사한 역할을 한다. DisposableEffect는 다음과 같은 형태로 사용된다.DisposableEffect(key1, key2) { // Composable이 제거될 때 Dispose 되어야 하는 효과 초기화 onDispose { .. 2024. 7. 30.
[Android-Compose] 안드로이드 컴포즈 부수 효과 알아보기! (Android Compose LaunchedEffect, rememberCoroutineScope, rememberUpdatedState) - SideEffect - 1편 이번 포스팅은 컴포즈를 사용하다 보면 LaunchedEffect, rememberCoroutineScope 등 다양한 Effect API들을 사용하게 된다.이러한 Effect API들이 무엇인지, 각각의 사용법과 특성에 대해 알아보겠다.# 부수 효과란?Effect API들을 알아보기 전에 부수 효과가 무엇인지 먼저 알 필요가 있다. 아래는 공식문서에 나온 부수 효과 설명이다.정리를 하자면 아래와 같다- 부수 효과는 구성 가능한 함수(Composable)의 범위 밖에서 발생하는 앱 상태에 관한 변경사항이다.- Composable에는 부수 효과가 없는 것이 좋다. 하지만 아래와 같은 경우는 부수효과가 필요한 경우가 있다.- 스낵바 표시- 특정 상태 조건에 따라 다른 화면으로 이동하는 등 일회성 이벤트를 트리.. 2024. 7. 27.
[Android-Compose] 안드로이드 컴포즈 애니메이션 예제와 함께 알아보기!(animateColorAsState, AnimatedVisibility, fadeIn, fadeOut ) 이번 공부 포스팅은 컴포즈 애니메이션에 대해 간단하게 알아보겠다. # animateColorAsState 우선 이 컴포저블 함수는 이름에서도 알 수 있다시피 Color에 관련한 애니메이션 함수이다. 인자로는 targetValue, animationSpec, label, finishedListener 4가지가 들어가야 한다. 그중 우리가 여기서 볼 거는 targetValue이다 이 인자에는 바꾸고 싶은 색상을 넣으면 된다. 나머지 인자들은 옵션이기 때문에 더 자세히 알고 싶으시면 따로 검색을 하는 걸 추천한다. 반환은 State 로 되기 때문에 by를 통해 값을 받아오는 게 깔끔하고 좋다 아래는 animateColorAsState의 유무의 차이이다. 사람에 따라서는 차이가 없다고 느낄 수도 있지만 작은 디.. 2024. 1. 12.