Motion layout animation

Animations always fascinated me. The synchronized or not-so-synchronized movement of objects in a screen, along with its creator’s vision, will create a delightful experience. Applications with subtle animations are a joy to watch. I remember opening the same app again and again to see its wonderfully implemented animations. Being said that, implementing animations in an Android app was not always easy. Whenever I put my hands on implementing animations in an app, I realized that I have to deal with lots of boilerplate code, messy XML files, and an unorganized structure.

Android introduced Motion layout back in 2018 to solve…


Image by rihaij from Pixabay

I have always wondered if there is a way to make sure that our DAO functions are faultless before running the application. I always double-check the statements or inspect the local database to validate everything is running as expected. Since I’m a newbie in the Android testing world, I was thrilled to know that it is possible to test the DAO functions, or in other words, we can write unit tests for the DAO class.

I understood that if the project follows the TDD principle, then ‘Dependency Injection’ is an integral part. Then I got introduced to ‘Dagger Hilt,’ the…


Image by Ryan McGuire from Pixabay

Edit: Hi all. Lots of fellow developers commented that this is not the safest method out there. So I’m cutting the ‘safest’ part from the title of this post. The original title was ‘How to Safely Store Credentials in Android Projects Using gradle.properties.’ Let me clarify that my intention was to share this knowledge to beginner Android developers. Rather than investing their time on complex methods to keep sensitive information in the project, I thought they can use this method as a starting point and then take it from there. I’m also mentioning the same in the article as well…


Photo by Startup Stock Photos from Pexels

Let’s be honest. Writing test cases in software development is either religiously followed or very much overlooked. There is no middle ground in it. But, whatever the case, it is an essential skill needed for a software developer. You will need to write test cases. If not today, then tomorrow. I’ll give a small introduction about the TDD architecture and testing in general before we start working on an example.

TDD architecture

You must have heard the term TDD a lot in recent times. TDD stands for test-driven development. …


Image by Steve Buissinne from Pixabay

Sometimes I feel like the world of Android development is funny. It is unpredictable at times. Or maybe Android studio is still learning. This one error occurred last week. I was sipping my coffee, watching the Gradle building my app, and all of a sudden, an error popped up in the build window.

Invalid main APK outputs : EarlySyncBuildOutput(type=com.android.build.gradle.internal.scope.InternalArtifactType$APK@1fdc3a85, apkType=MAIN, filtersData=[], version=0, output=D:sample projects\sample_app\app\build\outputs\apk\debug\app-debug.apk),EarlySyncBuildOutput(type=com.android.build.gradle.internal.scope.InternalArtifactType$APK@1fdc3a85, apkType=MAIN, filtersData=[], version=0, output=D:\sample projects\sample_app\app\build\outputs\apk\debug\output-metadata.json)

I was like, WTF just happened now. It was running without any errors all the while. And I was pretty sure I didn’t make any code changes. So what happened?

As…


Photo by Veri Ivanova on Unsplash

The idea of a stopwatch is charming. If you keep looking at it for some time, you will realize the power of a second. The seconds keep adding together and become a minute, then into hours, and so on. We can say that the stopwatch is nothing but a pop-up message telling us, time is precious and we should spend it wisely. So, today we are going to build a simple stopwatch app. I hope it will help you save plenty of time in the future. ⏱️

This is the end product


Photo by Tim Gouw from Pexels

The cover pic of this blog post is not a coincidence. I wanted to share with you the emotional trauma I was going through while implementing it. It is one of those odd days that makes you think, ‘Am I a good developer?’ and the ‘Impostor Syndrome’ will come back and haunt you afterward. So if you are feeling the same way, don’t worry. I’m having more than four years of experience in Android development, and it’s still a demanding task for me as well. Also, there is no standard way to integrate it. We must tweak the adapter in…


Photo by Angela Compagnone on Unsplash

I can only remember a handful of API’s that are developed by the Android team as effortless and advanced as this API. It all started with the inception of Android Jetpack. We can divide the Android development before Jetpack and after Jetpack. So many modern changes happened in the Android development in a short period after the introduction of AndroidX and Jetpack. But, only for good. I’m pleased that the Android team is giving their best service to the developers. Many such API’s are now in production. Few of them are in beta and alpha. …


Photo by Georg Bommeli on Unsplash

What is the most annoying and time-consuming task you have done in Android? For me, it is the handling of run time permissions. Remember the good all days? We will mention the permissions we want in the manifest file, and everything works fine as expected? Even if I want to go back to that old methodology, thinking about user privacy, it is not a reliable way to handle permissions. That’s why if the Android version is 6, or higher, we need to ask for these permissions as run-time permissions. I’m not going deep into the different types of run time…


As Android developers, we should be thankful for the existence of the Room persistence library. Before Room, we had to write tons of lines of code to make SQLite work. It helped us clean those boilerplate codes, as well as making working with SQLite more fun and simple. It provides many functionalities, including conversion between primitive and boxed types, but it doesn’t support object references. Think about the few primitive types that are coming into your mind, such as int, long, float, and char, etc. But sometimes, we need a custom data type whose value you would like to store…

Clint Paul

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store