안드로이드

    [Jetpack Compose] AnimatedVisibility 활용해 Animation 처리하기

    Compose의 AnimatedVisiblity 란? AnimatedVisibility란 Jetpack Compose에서 나타짐과 사라짐을 애니메이션으로 처리하기 위해 제공되는 API이다. 가장 기본적이고 간단한 API이며, 동시에 가장 강력한 API이다. 왠만한 애니메이션들은 AnimatedVisibility 하나로 모두 처리할 수 있다. Animated Visibility 내부 살펴보기 AnimatedVisiblity 내부에는 visible, modifier, enter, exit, label, content 총 6가지 파라미터가 들어간다. @Composable fun AnimatedVisibility( visible: Boolean, modifier: Modifier = Modifier, enter..

    [Jetpack Compose] ViewPager Tab Layout에 연결하기 : 스와이프해 탭 바꾸도록 만들기

    Tab과 ViewPager은 언제 사용되는가? Swipe해서 탭이 바뀌는 UI는 많은 앱에 쓰이며, 여러 페이지를 탭으로 구성해 사용 복잡도를 줄이기 위해 사용한다. 그림1과 같은 동작으로 Tab을 직접 클릭해서 Page를 이동할 수도 있으며, Swipe 동작을 통해 페이지를 이동할 수도 있다. 오늘은 이러한 UI를 만드는 방법에 대해 알아보고자 한다. 위 페이지를 만들기 위해서는 다음 단계들을 거쳐야 한다. Tab + ViewPager 만들기 위한 라이브러리 추가하기 Tab 목록 만들기 PagerState 선언하기 CoroutineScope 선언하기 TabRow 만들기 HorizontalPager 만들기 Compose로 Tab과 ViewPager 만들기 1. Tab + ViewPager 만들기 위한 ..

    [Android] LruCache 사용해 이미지 캐싱하기(Bitmap Cache)

    LruCache 란? LruCache객체는 안드로이드에서 캐시를 관리하기 위해 사용하는 메모리 캐시 객체이다. LruCache 객체는 LRU(Least Recent Used) 알고리즘을 사용하는데 간단히 말해서 최근에 조회된 것을 캐시에서 삭제하는 것을 늦추기 위한 객체이다. 즉, 오랫동안 접근되지 않은 메모리가 우선적으로 삭제된다. 안드로이드에서는 이 알고리즘에 대한 구현체를 제공하는데 바로 LruCache 클래스이다. LruCache 객체 내부를 보면 다음과 같이 선언되어 있다. *java 코드이니 감안해서 보도록 하자. public class LruCache { public LruCache(int maxSize) { .. } .. } 이 LruCache는 제네릭으로 선언되어 있는데 K가 캐시에 접근..

    [Compose Focus] 1. FocusRequester을 활용해 Focus 바꾸기 - Android Compose Focus Change

    FocusRequester란? FocusRequester란 컴포즈 상에서 컴포저블(View)의 Focus를 바꿔주는 객체이다. 예를 들어 Button이 눌렸을 때 포커스가 TextField로 가야하는 경우 사용된다. FocusRequester 사용법 1. FocusRequester을 Composable 내의 remember 블록에서 선언한다. 2. Modifier.focusRequester() 함수를 이용해 위에서 만든 focusRequester을 포커스를 주기 원하는 곳에 붙인다. 3. 특정 이벤트가 발생했을 때 포커스 주기를 원하면 requestFocus()을 붙인다. @Composable fun KotlinWorldFocusRequester() { .. val focusRequester = reme..

    [Android Compose State] State Hoisting(상태 호이스팅) 패턴이란 무엇인가?

    Compose의 State 선언형 UI 프레임워크인 Compose는 Stateless함이 가장 큰 장점이다. UI에 대한 UI상태의 상호 의존성을 끊을 수 있다면 UI의 재사용성이 생기고, UI에 대한 테스트 또한 가능해지기 때문이다. Compose Stateless의 장점 1. UI 재사용성 2. UI 테스트 가능성 하지만 가끔 상태가 UI에 저장되어야만 하는 경우가 있다. 대표적으로 TextField가 있다. TextField는 어떤 텍스트가 입력되었는지를 저장해야 하기 때문에 상태를 가져야 한다. 아래에서 제목을 가지도록 Custom한 TextField인 TextFieldWithTitle을 보자. @Composable fun TextFieldWithTitle(title: String) { var t..