본문 바로가기

전체 글

(50)
[안드로이드 Jetpack Compose UI] Row를 사용해서 HorizontalScrollView 구현하기 안녕하세요. 이번 포스팅에서는 안드로이드 Jetpack Compose에서 가로방향으로 아이템이 추가되는 HorizontalScrollView를 구현하겠습니다. Compose UI에서는 가로 방향으로 UI를 배치할 때 Row 컴포저블을 사용합니다. 이때, Row에 추가 옵션을 주면 아이템이 Row 컴포저블을 벗어나도 스크롤을 통해서 UI를 확인할 수 있습니다. 이제 간단한 예제를 통해 HorizontalScrollView를 구현하겠습니다. 1. Row를 사용해서 HorizontalScrollView 만들기 HorizontalScrollView 구현의 핵심은 Row 컴포저블과 horizontalScroll modifier의 조합입니다. Row는 자식 컴포저블들을 가로 방향으로 나열하며, horizontalS..
[안드로이드 Jetpack Compose] remember와 MutableState의 3가지 사용 방법 안녕하세요. 이번 포스팅에서는 안드로이드 Jetpack Compose에서 상태 변수를 관리하기 위해서 필수적으로 사용하는 remember와 MutableState에 대해서 설명하고, MutableState의 3가지 사용방법을 코드 예제와 함께 살펴보겠습니다. 1. MutableState와 Remember 개념 안드로이드 Jetpack Compose에서 UI 로직을 처리할 때는 주로 mutableStateOf와 remember를 사용합니다. 여기서 compose가 생소하신 분들은 remember의 역할에 대해 모를 수 있습니다. Compose UI는 선언형 UI 패러다임을 따르는 방식으로써 상태가 변할 때마다 렌더링을 다시 합니다. 이렇게 다시 렌더링이 되는 현상을 Compose에서는 리컴포지션이라고 부릅..
[안드로이드 Jetpack Compose UI] LazyColumn을 사용해서 무한 스크롤 뷰 만들기 안녕하세요. 이번 포스팅에서는 안드로이드 Jetpack Compose에서 무한스크롤 뷰를 만드는 방법에 대해 설명하겠습니다. 안드로이드 Compose UI에서는 기존 XML 기반의 레이아웃에서 사용했던 Adapter 없이 간단하게 무한스크롤 뷰를 구성할 수 있습니다. 바로 LazyColumn 컴포저블을 사용하면 됩니다. 선언적 UI 구성의 장점을 살려서 간결하고 유연한 코드 작성이 가능합니다. 1. LazyColumn을 사용해서 무한 스크롤 뷰 만들기 LazyColumn은 Compose에서 제공하는 컴포저블로 기존의 RecyclerView에서의 기능을 수행합니다. XML 레이아웃 기반 RecyclerView의 어댑터 패턴과는 다르게 LazyColumn에서는 Compose의 선언적 방식을 통해 각 아이템을..
[안드로이드 Jetpack Compose UI] Column을 사용해서 VerticalScrollView 구현하기 안녕하세요. 이번 포스팅에서는 안드로이드 Jetpack Compose에서 VerticalScrollView 만드는 방법에 대해 설명하겠습니다. Compose UI에서는 Column 컴포저블을 통해 세로로 UI를 배치할 수 있고, Column 컴포저블의 Modifier에 ScrollState를 전달해 줌으로써 Scrollable 하게 만들 수 있습니다. 1. Column을 사용해서 VerticalScrollView 만들기안드로이드 Compose에서는 기존의 안드로이드 개발에서 보던 ScrollView와는 다른 접근 방식을 제공합니다. 가장 간단하게 세로 스크롤 뷰를 만드는 방법은 Column 컴포저블에 verticalScroll Modifier를 적용하는 것입니다. 해당 Scroll State를 통해 간단..
[안드로이드 Jetpack Compose UI] TabPager 구현하기 안녕하세요. 이번 포스팅에서는 안드로이드 Jetpack Compose에서 TabPager를 구현하겠습니다. TabPager는 상당히 많이 사용되는 UI 중 하나입니다. TabPager를 구현할 때는 ViewPager를 연동해서 사용해야 하는데, 기존 xml 방식으로 UI를 개발할 때는 Adapter 클래스를 생성해야만 했고 연동 과정이 복잡했습니다. 그런데 안드로이드 Compose에서는 이러한 복잡한 과정이 사라졌으며 비교적 간단하게 TabPager를 구현할 수 있습니다. 이제 안드로이드 Jetpack Compose에서 TabPager를 구현하는 방법에 대해 설명하겠습니다. 1. TabPager 만들기 TabPager를 구현하기 위해 먼저 TabRow와 HorizontalPager를 연동하는 작업이 필요..
[안드로이드 Jetpack Compose UI 시리즈] ViewPager 구현하기 안녕하세요. 이번 포스팅에서는 안드로이드 Jetpack Compose에서 ViewPager를 구현하겠습니다. ViewPager는 최근 앱에서 많이 사용되고 있는 대표적인 UI 중 하나입니다. 기존 xml에서는 ViewPager를 구현하기 위해 별도의 Adapter를 생성하고, item에 해당되는 xml도 생성해줘야 했습니다. 그런데 안드로이드 Jetpack Compose에서는 상당히 편하게 구현할 수 있습니다. 이제 안드로이드 Jetpack Compose에서 ViewPager를 구현하겠습니다. 1. ViewPager 만들기 좌우로 넘어가는 ViewPager를 만들기 위해서 androidx.compose.foundation.pager의 HorizontalPager를 사용했습니다. 만약에 위아래로 넘길 수 ..
[안드로이드 트러블 슈팅] 서버 데이터 매핑 시, @SerializedName 어노테이션의 중요성 안녕하세요. 안드로이드 개발을 하다 보면 외부 API와의 통신은 필수적인 부분입니다. 이번 포스팅에서는 안드로이드 앱을 개발할 때, Retrofit을 사용하여 데이터를 받아오는 과정에서 JSON 형태의 서버 데이터를 data class를 이용해서 매핑 시, @SerializedName 어노테이션의 중요성에 대해 깨달은 트러블 슈팅 사례를 공유하고자 합니다. 1. 문제 상황 프로젝트를 3~4개월 정도 진행했을 때, 서버 통신 API가 약 30개 추가됐었습니다. 그에 맞춰서 서버 데이터를 매핑하는 DTO 클래스도 많이 생성돼 있었고, API 명세를 보면서 서버에서 반환하는 JSON 필드 이름과 안드로이드의 데이터 클래스 필드 이름을 동일하게 맞추어 개발했었습니다. @SerializedName 어노테이션을 사..
[안드로이드 트러블 슈팅] 빌드 시간 600초에서 30초로 단축한 사례 안녕하세요. 이번 포스팅에서는 안드로이드 빌드 시간을 약 600초에서 30초로 단축하는 데 성공한 트러블 슈팅 사례를 공유하겠습니다. 아래 사진은 안드로이드 스튜디오에서 확인할 수 있는 Build Analyzer입니다. 1. 문제 상황 안드로이드 실무에서 장기 프로젝트를 진행하면서 화면이 50~60개에 이르는 앱을 만들었습니다. 하지만, 프로젝트의 규모에 비례해서 빌드 시간이 점점 증가했고, 결국 약 600초까지 걸리는 상황에 이르렀습니다. 이는 개발자 경험을 크게 저하시켜서 신속한 개발과 문제 해결에 많은 어려움을 겪게 되었습니다. 2. 발생한 문제 프로젝트의 낮은 Gradle 및 코틀린 버전이 이 문제의 주된 원인으로 밝혀졌습니다. 이 프로젝트는 5~6년 전에 생성되었기 때문에 개발 환경 구성 플러그..