본문 바로가기

안드로이드

(60)
[안드로이드 Jetpack Compose Dialog 시리즈] Loading Dialog 구현하기 #3 안녕하세요. 이번 포스팅에서는 안드로이드 Jetpack Compose에서 전역으로 사용할 수 있는 로딩 팝업창을 띄우는 방법에 대해 포스팅하겠습니다. 로딩을 보여주는 방법은 무수히 많지만, 저는 xml 시절부터 안드로이드에서 제공하는 기본 dialog를 상속받아서 구현하는 형태로 많이 사용했습니다. 왜냐하면 dialog에는 dismissOnBackPress, dismissOnClickOutSide 등 기본으로 제공하는 기능이 많아서 개발자가 따로 구현하지 않아도 되기 때문입니다. Compose에서도 비슷한 방법으로 간단하게 로딩창을 보여줄 수 있습니다.1. Loading Dialog 만들기전역 로딩 팝업창을 만들기 위해 먼저 LoadingState라는 싱글턴 객체를 만들어 로딩 상태를 관리합니다. 그런 ..
[안드로이드 Jetpack Compose Dialog 시리즈] BottomSheetDialog 구현하기 #2 안녕하세요. 이번 포스팅에서는 안드로이드 Jetpack Compose에서 BottomSheetDialog를 구현하는 방법에 대해서 설명하겠습니다. BottomSheetDialog는 하단에서 위로 올라오는 형태의 dialog로써 현대 앱에서 많이 볼 수 있습니다. 기존의 xml에서 구현할 때보다 많이 쉬워졌는데 아래 예제를 통해서 설명하겠습니다. 1. Compose에서 BottomSheetDialog 사용하기 안드로이드 Jetpack Compose에서 BottomSheetDialog를 사용하면 사용자에게 추가 정보를 제공하거나 선택을 요구하는 등의 상호작용을 제공하는 상황에서 효과적입니다. Compose에서는 Material3에서 제공하는 ModalBottomSheet 컴포저블을 활용하여 손쉽게 구현할 수..
[안드로이드 Jetpack Compose Dialog 시리즈] 커스텀 Dialog 구현하기 #1 안녕하세요. 이번 포스팅에서는 안드로이드 Jetpack Compose에서 Custom Dialog를 구현하는 방법에 대해서 설명하겠습니다. Compose는 선언적 UI 프레임워크로, UI를 구성하는 방식이 기존의 XML 기반 방식과는 크게 다릅니다. 이러한 차이로 인해 Dialog를 구현하는 방식에도 몇 가지 변화가 생겼습니다. 1. Compose에서 Dialog 구현하기 Jetpack Compose에서 Dialog를 사용하는 기본적인 방법은 Dialog 컴포저블을 직접 사용하는 것입니다. Dialog 컴포저블을 사용하면, Dialog의 기본적인 요소들이 전부 구현돼있는 것을 사용하면 됩니다. 그리고 Compose의 상태 관리 시스템과도 잘 통합되어 있습니다. 2. Custom Dialog 만들기 Com..
[안드로이드 Jetpack Compose Paging3 시리즈] RemoteMediator 적용하기 #11 1. RemoteMediator를 Pager에 적용하기 안녕하세요. 지난 포스팅에서는 안드로이드 Jetpack Compose의 Paging3 라이브러리에서 제공하는 RemoteMediator를 구현하고, 코드를 분석하면서 어떤 역할을 하는지에 대해 살펴보았습니다. 이번 포스팅은 RemoteMediator와 PageSource를 Pager에 전달해서 화면에 정상적으로 UI가 보이는지 확인하겠습니다. 2. 안드로이드 Jetpack Compose Pager 구현 과정 Pager의 매개변수에 RemoteMediator와 PagingSource를 전달해주어야 합니다. Hilt 라이브러리를 이용해서 의존성을 주입받고, Pager 객체에 적절한 매개변수를 전달해서 RemoteMediator 기능이 적용된 Pager를..
[안드로이드 Jetpack Compose Paging3 시리즈] RemoteMediator 코드 설명 #10 1. RemoteMediator 코드 분석을 하는 이유 안녕하세요. 지난 포스팅에서는 안드로이드 Jetpack Compose Paging3 라이브러리를 사용하기 위해서 LocalDataSource와 RemoteMediator를 구현했습니다. 해당 라이브러리의 정확한 원리를 이해해야 응용력도 생기고 개발자로서의 성장에도 도움이 되기 때문에 이번 포스팅에서는 RemoteMediator의 코드를 분석하겠습니다. 2. RemoteMediator의 LoadType, MediatorResult 정리 안드로이드 Jetpack Compose Paging3의 RemoteMediator를 사용하려면 RemoteMediator라는 추상클래스를 상속받아서 구현하게 됩니다. 해당 클래스에서는 LoadType, PagingSta..
[안드로이드 Jetpack Compose Paging3 시리즈] RemoteMediator 구현하기 #9 1. RemoteMediator 구현하기 안녕하세요. 지난 포스팅에서는 안드로이드 Jetpack Compose Paging3 라이브러리를 사용할 때 로컬 데이터베이스와 상호작용하기 위한 Local Data Source를 구현했습니다. 이번 포스팅에서는 네트워크를 통해 가져온 데이터를 로컬 데이터베이스에 저장하기 위해 RemoteMediator를 구현하겠습니다. 2. RemoteMediator란? RemoteMediator는 안드로이드 Jetpack Compose의 Paging3 라이브러리의 핵심 컴포넌트 중 하나로, 네트워크와 로컬 데이터베이스 간의 데이터 동기화를 담당합니다. 네트워크에서 데이터를 가져온 후 로컬 데이터베이스에 저장하고, 이 데이터를 PagingSource를 통해 UI에 제공하는 역할을..
[안드로이드 Jetpack Compose Paging3 시리즈] Local Data Source 생성하기 #8 1. 로컬 데이터베이스에 접근하기 위한 Local Data Source 안녕하세요. 지난 포스팅에서는 안드로이드 Jetpack Compose Paging3 라이브러리를 사용할 때 로컬 데이터베이스에 캐시 데이터를 저장하기 위해서 Room 라이브러리를 이용하여 데이터베이스를 세팅해 주었습니다. 이번 포스팅에서는 데이터베이스와 상호작용을 하기 위한 Local Data Source를 세팅하겠습니다. 2. Local Data Source 세팅하기 RemoteMediator는 안드로이드 Jetpack Compose의 Paging3 라이브러리의 핵심 컴포넌트 중 하나로, 네트워크와 로컬 데이터베이스 간의 데이터 동기화를 담당합니다. 그래서 데이터베이스와 상호작용을 할 수 있는 Local Data Source를 먼저..
[안드로이드 Jetpack Compose Paging3 시리즈] Room Database 세팅하기 #7 1. RemoteMediator 구현을 위해 Room Database 세팅 안녕하세요. 이번 포스팅에서는 Jetpack Compose Paging3 라이브러리에서 RemoteMediator를 구현하기 위해 Room Database 세팅을 진행하겠습니다. 지난 포스팅에서 설명했듯이, RemoteMediator는 Paging3 라이브러리로 불러온 데이터를 로컬 데이터베이스에 저장한다고 말씀드렸습니다. 그래서 먼저 Room Database를 세팅한 후, RemoteMediator를 구현해야 합니다. 2. Data Layer에 데이터베이스 관련 클래스 및 인터페이스 생성 Data Layer에 Room 데이터베이스 구성을 위한 파일들을 생성하겠습니다. 어렵게 생각하지 말고 간단하게 생각하면 쉽습니다. 데이터베이스..