본문 바로가기

compose26

[Android-Compose] 안드로이드 컴포즈의 안정성(Stability) 2편 - @Stable, @Unstable 이번 2편에서는 컴파일러가 항상 완벽하게 stable을 판단해 주지 않기 때문에 내가 만든 클래스 혹은 객체가 실제로는 stable 한데 컴파일러는 unstable로 판단할 수 있는 현상을 해결하기 위한 방법을 알아보겠다.이해를 위해서 1편을 보고 오는 걸 추천한다.# @Stable, @Immutable 어노테이션컴파일러가 항상 완벽하게 판단해 주지 않기 때문에 내가 만든 클래스 혹은 객체가 실제로는 stable 한데 컴파일러는 unstable로 판단할 수 있다.그래서 @Stable, @Immutable 어노테이션을 우리가 적절히 활용해 직접 알려줘야 정확히 stable로 인식시킬 수 있다.## @Stable🔸 @Immutable 보다는 조금 느슨한 약속🔸 잠재적인 변경 가능성에도 불구하고 예측 가능.. 2025. 7. 26.
[Android-Compose] 안드로이드 컴포즈의 안정성(Stability) 1편 - Recompoition, stable, unstable 이번 공부 할 내용은 컴포즈의 안정성에 관한 내용이다. 컴포즈로 개발을 하다 보면 만든 컴포저블 함수가 자주 다시 호출(Recomposition)되는 경험이 있을 것이다. 텍스트 하나 바뀐 것도 아닌데 Text 컴포저블이 리컴포지션이 된다면 불필요한 리컴포지션이 된다.만약 계속 불필요한 리컴포지션이 일어나면 성능 저하로 이어질 수 있다. 그럼 컴포즈에서는 어떤 기준으로 리컴포지션을 발생시키고 불필요한 리컴포지션을 줄이는 방법 즉 안정성을 높이는 방법을 알아보자!# 리컴포지션(Recompoition)이란?Compose는 상태 기반 UI 프레임워크로 어떤 상태 값이 바뀌면 그 값을 사용하는 컴포저블 함수만 다시 실행된다. 이 과정을 리컴포지션(Recomposition)이라고 한다. 전체 UI를 다시 그리.. 2025. 6. 15.
[Android-Compose] 안드로이드 컴포즈 Icon vs Image 차이점 / 각 각 컴포저블 함수 알아보기 (Compose Icon, Image) 이번 포스팅은 간단하면서 궁금한 Icon 컴포저블과 Image 컴포저블의 차이점을 알아보겠다! 사실 둘 다 사진을 보여주는 컴포저블이라서 처음에는 어떤 경우에 Icon을 사용하고 어떤 경우에는 Image를 사용하는지 구분이 안 갔다.그래서 이번에 공부하는 겸 작성해보기로 했다.# Icon@Composablefun Icon( painter: Painter, contentDescription: String?, modifier: Modifier = Modifier, tint: Color = LocalContentColor.current.copy(alpha = LocalContentAlpha.current)) {......} 위 코드는 Icon 컴포저블 내부이다. 각 인자 별로 알아보자!위.. 2025. 5. 18.
[Android-Compose] 안드로이드 컴포즈 바텀시트 구현해보기! (Android Compose BottomSheet) - ModalBottomSheetLayout, ModalBottomSheet 이번 공부 노트는 안드로이드 컴포즈에서 바텀 시트를 예제를 통해 구현해 보도록 하겠다.구현하는 방법은 ModalBottomSheetLayout, ModalBottomSheet 크게 두 가지가 있다.하나하나씩 알아보자! ※ 본 예제는 MaterialDesign3 기준으로 작성했다.해당 버튼을 누르면 과일 리스트가 바텀시트로 나오는 예제이다.# ModalBottomSheetLayout이 방식은 구버전 API로 콘텐츠와 바텀 시트를 함께 포함하는 레이아웃 컴포넌트이다.일반적으로 화면 전체를 감싸는 방식으로 사용따라서 콘텐츠와 바텀 시트를 함께 포함하고 싶다면 사용 추천! ModalBottomSheetLayout 내부를 살펴보자@Composable@ExperimentalMaterialApifun ModalBot.. 2025. 4. 20.
[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.