목록Android/Compose (15)
시배's Android

최근 진행 중인 홈노크타운 프로젝트에서 Hi-Jack-Mocker 라이브러리를 연동하는 과정에서 OOM 문제를 겪었습니다. 이 문제를 해결하기 위해 여러 시도를 해보았고, 그 과정을 공유하고자 합니다. GitHub - koreatlwls/Hi-Jack-Mocker: Hi-Jack-Mocker is a project that leverages OkHttp3's interceptor to intercept and modify netHi-Jack-Mocker is a project that leverages OkHttp3's interceptor to intercept and modify network requests and responses, allowing you to verify the UI easil..
6 Jetpack Compose Guidelines to Optimize Your App Performance Since Google announced Jetpack Compose stable 1.0, many companies are getting started to adopt Jetpack Compose into their projects… proandroiddev.com 1. Aim to Write Stable Classes Compose에는 전용 runtime이 있으며, 입력이나 상태가 변경될 때 어떤 Composable 함수를 재구성할지 결정합니다. 런타임 성능을 최적화하기 위해 Compose는 읽고 있는 상태가 변경되었는지 유추할 수 있어야 합니다. 기본적으로 아래 세 가지 stability ..

저희 프로젝트에서 발생한 Android Jetpack Compose AnimatedContent를 사용하면서 발생한 에러와 그에 대한 해결 과정을 공유하려 합니다. 저희 프로젝트는 생활지수와 관련된 정보를 백엔드에서 받아와 이를 롤링되는 이미지로 시각적으로 제공하고 있습니다. fun VerticalRollingContent( modifier : Modifier = Modifier, enterDurationMillis: Int = 300, enterDelayMillis: Int = 500, exitDurationMillis: Int = 300, exitDelayMillis: Int = 0, items: List, content: @Composable (T) -> Unit, ) { var index by r..
이번 글에서는 animateScrollToItem or scrollToItem을 통해 특정 아이템으로 스크롤을 할 때 NestedScrollConnection 불려지지 않아 커스텀 된 TopAppBar의 상태가 변경되지 않는 문제로 삽질을 하다가, 구글의 의도를 알 수 있었고 조금은 cracky 한 방법으로 해결을 하였는 것을 공유하고자 합니다. 문제의 발생 현재 저는 NetstedScrollConnection을 활용하여 scroll에 따라 특정 state를 변경시키며 이를 TopAppBar에 적용시켜 커스텀한 동작을하는 TopAppBar를 구현하여 사용 중에 있었습니다. 추후 요구사항이 추가되어 animateScrollToItem을 통해 최상단을 도달하게 하는 기능을 추가하고 나니 animateScro..

Modular Navigation with Jetpack Compose A large amount of mobile apps will need some form of Navigation, allowing users to move between different parts of an application. When… medium.com 대부분의 모바일 앱에는 사용자가 애플리케이션의 여러 부분 사이를 이동할 수 있도록 하는 일종의 내비게이션이 필요합니다. Android 앱 내에서 이러한 요구 사항을 구현할 때 애플리케이션은 자체 솔루션을 구현하거나 기존의 인텐트 또는 조각 관리자에 의존하거나 최근 몇 년 동안 탐색 컴포넌트 옵션을 탐색해 왔습니다. Jetpack Compose의 알파 버전과 개발자 프리뷰 버..
이번 글에서는 Compose에서 다중 클릭 이벤트를 처리하는 방법에 대해 소개하겠습니다. interface MultipleEventsCutterManager { fun processEvent(event: () -> Unit) } @OptIn(FlowPreview::class) @Composable fun multipleEventsCutter( content: @Composable (MultipleEventsCutterManager) -> T ) : T { val debounceState = remember { MutableSharedFlow Unit>( replay = 0, extraBufferCapacity = 1, onBufferOverflow = BufferOverflow.DROP_OLDEST ) ..
Android 개발을 하다 보면 이미지나 콘텐츠를 확대/축소하거나 드래그하여 이동시키는 기능이 필요한 경우가 있습니다. 이러한 기능을 구현하려면 ZoomState 클래스와 같은 커스텀 상태 클래스를 사용할 수 있습니다. 이 클래스는 Android Jetpack Compose를 사용하여 화면에 구현된 이미지나 콘텐츠를 제어하고 상호작용하는 데 도움을 주는 클래스입니다. ZoomState 클래스 소개 @Stable class ZoomState( @FloatRange(from = 1.0) private val maxScale: Float = 5f, private var contentSize: Size = Size.Zero, private val velocityDecay: DecayAnimationSpec = ..
Jetpack Compose Side Effects in Details Optimizing UI Performance in Jetpack Compose with SideEffect, LaunchedEffect, and DisposableEffect. Learn how to manage UI effects. medium.com Whey Side-effects? Jetpack Compose에서 사이드 이펙트의 목적은 컴포저블 함수 외부에서 앱의 상태를 변경하는 UI와 관련이 없는 작업을 제어되고 예측 가능한 방식으로 실행할 수 있도록 하는 것입니다. 데이터베이스 업데이트 또는 네트워크 호출과 같은 부수 효과는 코드의 성능과 유지 관리성을 개선하기 위해 UI 렌더링 로직과 별도로 유지해야 합니다. Jetpac..