Android (42) 썸네일형 리스트형 [Android] View에서 by viewModels() 사용하기 ❗주의이 Extension은 Hilt DI 라이브러리 사용과 Activity 또는 Fragment에 @AndroidEntryPoint 어노테이션이 선언되어 있는 경우 유용하게 사용 가능합니다.import android.app.Activityimport android.content.Contextimport android.content.ContextWrapperimport android.view.Viewimport androidx.activity.ComponentActivityimport androidx.annotation.MainThreadimport androidx.lifecycle.HasDefaultViewModelProviderFactoryimport androidx.lifecycle.ViewMode.. [Android] FlexboxLayout 초과된 줄 숨김 처리 Extension FlexboxLayout가 몇 줄을 넘어가는 경우 더보기 / 숨김 기능을 구현하는 과정에서 만든 Extension입니다.import androidx.core.view.childrenimport androidx.core.view.isVisibleimport com.google.android.flexbox.FlexboxLayoutval FlexboxLayout.lineCount: Int get() = flexLines.sizefun FlexboxLayout.hideOverLines(criteria: Int) { if (lineCount > criteria) { for (i in criteria until lineCount) { val flexLine = flexLi.. [Android] Jetpack Compose Radar Chart Jetpack Compose로 구현해본 Radar Chart(방사형 차트) 입니다.import androidx.compose.animation.core.Animatableimport androidx.compose.animation.core.tweenimport androidx.compose.foundation.Canvasimport androidx.compose.foundation.layout.aspectRatioimport androidx.compose.foundation.layout.fillMaxWidthimport androidx.compose.material3.MaterialThemeimport androidx.compose.runtime.Composableimport androidx.compos.. [Android] Compose Scrollable Column에서 처음 보여지는 타이밍 캐치하기 들어가는 글신규 기능으로 매출 분석을 차트, 막대 그래프 등 시각적으로 표현하는 기능을 개발하게 되었습니다.평소 토스의 인터랙션과 애니메이션에 관심이 많았기에 소비 분석 화면을 참고해보기로 했습니다.소비 분석엔 카테고리별 소비, 일별 소비, 월별 소비, 고정 지출 등 다양한 분석이 Column에 나열되어 있습니다.막대그래프의 높이 애니메이션, 원그래프의 애니메이션은 Column을 스크롤해 화면에 표시되는 순간 시작하게 됩니다.토스처럼 Scrollable Column에서 화면에 보여졌을 때 애니메이션이 시작되길 원했습니다.처음에는 LazyColumn을 사용해봤지만 하단을 갔다가 상단을 갔을 때 애니메이션이 다시 시작되는 문제가 있었고, debug 환경에서 프레임이 떨어지는 현상도 있어 일반 Column을 .. [Android] Fragment.rootFragment extension property val Fragment.rootFragment: Fragment get() = parentFragment?.rootFragment ?: this Fragment가 여러 개 쌓여있는 상황일 때 가장 최상단 Fragment를 반환한다. 재귀방식으로 구현해 봤으며, RootFragment 레벨에서 ViewModel 공유가 필요할 때 사용할 수 있다. class TestFragment: Fragment() { private val testViewModel: TestViewModel by viewModels(ownerProducer = { rootFragment }) } fun Fragment.findRootFragment(predicate: (Fragment) -> Boolean): Fragment { retu.. [Android] Compose Flow.collectAsState() 파악하기 Compose에서 Flow를 State로 변환할 때 collectAsState()를 사용한다. Compose Extension 들의 구현을 알면 Compose에 대한 이해도도 키울 수 있을 것 같아 파악해보려 한다. fun Flow.collectAsState(): State @Composable fun Flow.collectAsState( initial: R, context: CoroutineContext = EmptyCoroutineContext ): State = produceState(initial, this, context) { if (context == EmptyCoroutineContext) { collect { value = it } } else withContext(context) { co.. [개발 정보] 코틀린 코루틴 레시피(활용법) https://kt.academy/article/cc-recipe [Android] Gson을 대체하는 Moshi 주의! 본 포스팅은 ChatGPT를 통해 만들었습니다 Caution! This Posting was made with ChatGPT Moshi란? Moshi는 Square에서 개발한 JSON 파서 라이브러리입니다. Gson과 유사하지만, 성능이 더 빠르고 코틀린과의 호환성이 더 높은 특징을 가지고 있습니다. Moshi는 자바 및 안드로이드 앱과 함께 사용할 수 있습니다. 장점 목록 Moshi는 Gson보다 더 빠릅니다. Moshi는 코틀린과의 호환성이 더 높습니다. Moshi는 직렬화 및 역직렬화를 보다 쉽게 할 수 있습니다. Moshi는 유연성이 높아 사용자 정의 형식을 처리하기 쉽습니다. Gson과의 차이 Moshi는 성능이 더 빠릅니다. Moshi는 코틀린과의 호환성이 더 높습니다. Moshi는 J.. 이전 1 2 3 4 ··· 6 다음