본문 바로가기

안드로이드 공부 노트62

[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.
[Git - 오류] Git Push 실행 시 error: RPC failed; HTTP 500 curl 22 The requested URL returned error: 500 에러 # 오류 발단이번 오류 포스팅은 여느 때와 같이 작업한 코드를 커밋 후 푸시를 하려고 했다. 하지만 아래와 같은 오류를 만나게 된다..error: RPC failed; HTTP 500 curl 22 The requested URL returned error: 500send-pack: unexpected disconnect while reading sideband packet  # 오류 원인오류의 원인으로는 간단하게 설명하면 파일 크기 때문에 발생하는 오류이다. 더 정확한 이유는 Git에서 큰 파일을 푸시할 때 버퍼 크기 제한으로 인해 "HTTP 500 Internal Server Error"가 발생할 수 있다. # 해결 방법해결 방법으로는 간단하다!버퍼 크기가 부족하니 버퍼 크기를 늘려주기만 하면 되는 .. 2025. 3. 26.
[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.