Starting an android project will bring in a new set of challenges π aka adding tons of Gradle dependencies. Even though you use these dependencies in almost all your applications, you canβt just g...
Android β Instrumentation test with hilt
Testing in Android has been a pain from the beginning and there is no standard architecture setup to execute the frictionless test. As you know there is no silver bullet for all the snags. This pie...
Smoke, mirrors & HiltViewModel
This is the second installment in the three-part series. To understand better, you can read part1 or open the github project to explore the code. Part1: Android β Basic Hilt setup with viewmodel +...
Android β ViewModel factory and instantiation
Android ViewModel is one of the most helpful APIs exist in the ecosystem. Itβs a major release which changed how the Android apps built. Together with LiveData it decoupled the UI from business log...
Android β Basic Hilt setup with viewmodel + fragment
Hilt is a modern android DI framework for dependency injection. It is merely a wrapper around Dagger2. Forget dagger-android, hilt brings a lot to our plate. This article covers steps to add hilt t...
Designing a bottom navigation bar with Jetpack compose
Intro This article covers the design aspect of the bottom navigation bar using Jetpack compose. Weβre looking at a simple composable with few customizable params for the icons. Take this as an app...
I created few shapes in Jetpack compose / Gist included
Sharing few of my jetpack-compose shapes here. Did path tracing and drew path on canvas. Heart π - Gist Tag π - Gist Polygons π - Gist Car π - Gist π· Tool set Figma fo...
Jetpack compose - shape your views
Jetpack compose has an elegant way to cut out a Compose view into the desired shape. Iβm covering few shapes that are available in the core compose lib and where do they differ. All the shapes dis...
Android β Implementing LifecycleAwareTimer
Android CountDownTimer is good but it can be better. This article covers few tweaks to the timer and in general how to decouple certain logic from activity. π Background CountDownTimer is a conve...
Flow is non-blocking but the collector is not
Flow is an idiomatic way in kotlin to publish sequence of values. While the flow itself suspendable, the collector will block the coroutine from proceeding further. Letβs see with an example. β² Fl...