리스트 예시: 게시물이 존재할 경우 3건을 노출합니다. Android [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 [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 [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 [Android] Compose Scrollable Column에서 처음 보여지는 타이밍 캐치하기 들어가는 글신규 기능으로 매출 분석을 차트, 막대 그래프 등 시각적으로 표현하는 기능을 개발하게 되었습니다.평소 토스의 인터랙션과 애니메이션에 관심이 많았기에 소비 분석 화면을 참고해보기로 했습니다.소비 분석엔 카테고리별 소비, 일별 소비, 월별 소비, 고정 지출 등 다양한 분석이 Column에 나열되어 있습니다.막대그래프의 높이 애니메이션, 원그래프의 애니메이션은 Column을 스크롤해 화면에 표시되는 순간 시작하게 됩니다.토스처럼 Scrollable Column에서 화면에 보여졌을 때 애니메이션이 시작되길 원했습니다.처음에는 LazyColumn을 사용해봤지만 하단을 갔다가 상단을 갔을 때 애니메이션이 다시 시작되는 문제가 있었고, debug 환경에서 프레임이 떨어지는 현상도 있어 일반 Column을 .. Android [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 [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.. Android [개발 정보] 코틀린 코루틴 레시피(활용법) https://kt.academy/article/cc-recipe 투자 [주식투자] 투자 관련 도서 피터 린치의 이기는 투자 - 피터 린치, 존 로스차일드 전설로 떠나는 월가의 영웅 - 피터 린치, 존 로스차일드 피터 린치의 투자 이야기 - 피터 린치, 존 로스차일드 위대한 기업에 투자하라 - 필립 피셔 보수적인 투자자는 마음이 편하다 - 필립 피셔 현명한 투자자 - 벤저민 그레이엄 돈, 뜨겁게 사랑하고 차갑게 다루어라 - 당드레 코스톨라니 모든 주식을 소유하라 - 존 보글