25 Best Android Libraries, Projects, and Tools You Won’t Want to Miss Out in 2021
Tags: android, kotlin, programming, productivity
Published: 2021-10-09 20:59:51

Hello everyone, this is my first post on dev.to 🚀 
I start to post new content here as well as on other platforms. Actually this is [cross-post from Medium](https://medium.com/@mmbialas/25-best-android-libraries-projects-and-tools-you-dont-want-to-miss-in-2021-681dafe58b1c), however you all know that Medium is quite restrictive for non-members.

Due to this fact, I want to post my articles on dev.to too.
I believe that free and open content is just better for everyone. Enjoy then!

It has been quite some time when I posted my last pieces about [`Medium links alert!`] 🙃 [20 Android Dev Tools You’ve Probably Never Heard Of](https://betterprogramming.pub/20-android-dev-tools-youve-probably-never-heard-of-c6cc08b4e543) and [The 25 Best Android Libraries and Projects of 2020 — Summer Edition](https://betterprogramming.pub/25-best-android-libraries-projects-of-2020-summer-edition-dfb030a7fb0a).

Now I am back with a brand new compilation of really inspirational, worthy to check, promising Android projects, libraries, and tools released or heavily refreshed in 2021.

I have listed projects written in Kotlin and Kotlin Multiplatform in an unordered list so if you are eager to learn new things, check them all!

### 1\. [Expenso](https://github.com/Spikeysanju/Expenso)

This is a simple application for tracking your expenses.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/swo2e13akat14bt1374z.png)

The project was built to showcase the usage of Android modern development components based on MVVM architecture, like:

*   [Coroutines](https://kotlinlang.org/docs/reference/coroutines-overview.html)
*   [Android Architecture Components](https://developer.android.com/topic/libraries/architecture), especially: [Stateflow](https://developer.android.com/kotlin/flow/stateflow-and-sharedflow), [Flow](https://kotlinlang.org/docs/reference/coroutines/flow.html), [ViewModel](https://developer.android.com/topic/libraries/architecture/viewmodel) , [Room](https://developer.android.com/topic/libraries/architecture/room), [Jetpack Navigation](https://developer.android.com/guide/navigation), [DataStore](https://developer.android.com/topic/libraries/architecture/datastore), and [Material Components for Android](https://github.com/material-components/material-components-android)

The documentation is really good and presents the overall project structure and architecture.

The project supports dark and light mode and it is released under Apache 2.0 license.


### 2\. [TimeRangePicker](https://github.com/Droppers/TimeRangePicker)

Here is a customisable, easy-to-use, and functional circular time range picker library.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0b45bx8egl9ehc74mifz.png)

The project is 100% written in Kotlin and was created to mimic Apple’s iOS or Samsung’s bedtime picker. It has good documentation, which also helps with the first [configuration](https://github.com/Droppers/TimeRangePicker#configuration).

The library is copyrighted under an MIT license.


### 3\. [SSCustomBottomNavigation](https://github.com/SimformSolutionsPvtLtd/SSCustomBottomNavigation)

This is another customizable bottom bar library with curved animations and Jetpack Navigation support.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7x7v3vixp2whb1ou2f76.png)

This library is quite inspirational and has a fresh approach to the bottom bar’s animations and UI. It offers:

*   Customization of text, color, background, and icon
*   Animated wave with customizable height
*   Native control and Jetpack Navigation support

The project is well documented and released under Apache 2.0 license.

### 4\. [Curtains](https://github.com/square/curtains)

> Curtains provides centralized APIs for dealing with Android windows.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/m0s6ryplpeod85nz1dk6.png)

This library is developed by [Py ⚔](https://twitter.com/piwai) from Square Engineering.

It can be used for:

> Intercepting touch events on all activities and dialogs: for logging, detecting frozen frames on touch, fixing known [bugs](https://issuetracker.google.com/issues/156666934) or ignoring touch events during transitions.

> Knowing when root views are detached, e.g. to detect if they might be leaking ([LeakCanary](https://github.com/square/leakcanary)).

> Listing all attached root views for debugging ([Radiography](https://github.com/square/radiography)) or test purposes ([Espresso](https://github.com/android/android-test/blob/master/espresso/core/java/androidx/test/espresso/base/RootsOracle.java)).

Real-life scenario: currently many popular apps, like TeamViewer, can take control or record screen on the phones. Sometimes, as developers, we need to prevent these actions. Using Curtains we can detect some users’ touch events (e.g. entering a PIN).

The library has [great documentation](https://github.com/square/curtains), examples, samples, and FAQ. It is developed under Apache License, Version 2.0, and currently has a 1.2.1 version, so it is ready for production projects.


### 5\. [RoundedProgressBar](https://github.com/MackHartley/RoundedProgressBar)

Here’s another interesting library for creating elegantly rounded `ProgressBars`.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4n9kvh5rlust8oxgywyx.png)

It allows us to create progress bars with animations and text customizations. The documentation is quite comprehensive, there is even a [sample in Google Play](https://play.google.com/store/apps/details?id=com.mackhartley.roundedprogressbarexample).

The project has version 2.1.0 and is released under the Apache License, Version 2.0.


### 6\. [SurveyKit](https://github.com/quickbirdstudios/SurveyKit)

This is a library for creating beautiful surveys on Android.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/m9k5cpz5tgg8w5u076c6.png)

It was inspired by [ResearchKit Surveys](https://github.com/ResearchKit/ResearchKit) on iOS and allows you to create many types of surveys. You can check them in the really good comprehensive [documentation](https://github.com/quickbirdstudios/SurveyKit#-usage) with examples.

The project is covered with tests (which is not so common) and released under an MIT license.

### 7\. [Gamedge](https://github.com/mars885/gamedge)

Another application that demonstrates the latest trends in Android development by utilizing the best practices, libraries, and tools to develop a fully-fledged Android application.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9umji7lw5ogwfys59wxl.png)

The application is modularized, written 100% in Kotlin, uses Dagger Hilt, Coroutines, Navigation Component, and many more. Also, it is covered with tests. Big recommendation from my side!

All are released under Apache 2.0 license.


### 8\. [SegmentedProgressBar](https://github.com/TOrnelas/SegmentedProgressBar)

SegmentedProgressBar is an Instagram-like segmented progress bar.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ipkzc9pt9fo5n2uc5ocb.png)

The library has quite good documentation, sample app and it is easy to use.

Released under MIT license and has version 0.0.4, which indicates that is in quite an early stage of development and I would recommend it more to play than to include in a production project. Still, it is quite interesting.

### 9\. [Licensee](https://github.com/cashapp/licensee)

> This is Gradle plugin which validates the licenses of your dependency graph match what you expect, or it fails your build.

Long story short, thanks to that plugin, you will not be bothered by 3rd party libs which licenses have been changed e.g. from Apache 2.0 to MIT or to different ones.   
You can decide on your own, which licenses you accept or the project accepts.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1t4j9o9p0ehaqhtver24.png)

In the picture above there is a configuration that makes the project fail during a build time if the author of a 3rd party library changes the license to different than Apache 2.0 or MIT.

This plugin is developed and supported by Square Engineering, offers lots of customizations, and is released under Apache 2.0 license. Big recommendation!


### 10\. [TedImagePicker](https://github.com/ParkSangGwon/TedImagePicker)

This is an implementation of a simple yet beautiful image picker.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/b3zm83jsc6iwtyiqd0m3.png)

The library supports:

*   image and video picking
*   single and multi-select
*   lots of configuration options like animations, showing camera tile background, image, back button, etc. All the configuration options you can find in quite comprehensive [documentation](https://github.com/ParkSangGwon/TedImagePicker).

All is released under Apache 2.0 license, written 100% in Kotlin.


### 11\. [Radiography](https://github.com/square/radiography)

This is another great library from Square Engineering team. It can print a subset of the view hierarchies by specifying a `ScanScope`. By default, Radiography will scan all the windows owned by your app.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/oktf842oxzezi1p5guz6.png)

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/d88z5711zy8s41bzit6f.png)

As you can see, this lib can be utilized as a Hierarchy Viewer tool which returns the view hierarchy as a pretty string that you can print in the `logcat` or in a `TextView`. Square Engineering team describes it as “Text-ray goggles for your Android UI.”.

The library has great documentation, Jetpack Compose support, is often maintained and released under Apache 2.0 license.


### 12\. [PanelLayout](https://github.com/wayfair-incubator/panel-layout)

> Panel Layout is a UI library for Android that allows you to display a floating and resizable panel that can also snap to the edges.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/60mbhb3grvocehhpqnce.png)

The library was inspired by the iOS UI framework [PanelKit](https://github.com/louisdh/panelkit) and uses [`ConstraintLayout`](https://developer.android.com/training/constraint-layout) to lay out the panel with rest of the content.

It is quite interesting but I would use it only for testing purposes, as it was removed from `jfrog()` repositories. It was released under 2-clause BSD License. The documentation is useful and worthy to check.


### 13\. [KMM Production Sample](https://github.com/Kotlin/kmm-production-sample)

The project was created to showcase [Kotlin Multiplatform Mobile](https://kotlinlang.org/lp/mobile/). It is a simple RSS reader which is also available in the [App Store](https://apps.apple.com/ru/app/kmm-rss-reader/id1563922264) and [Google Play](https://play.google.com/store/apps/details?id=com.github.jetbrains.rssreader.androidApp).

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yyw4o3k4l2pdmsizq0us.png)

The project was designed to demonstrate how KMM can be used in real production projects.​​

What is quite uncommon, the project defines an architecture, which not only shares the data and domain layer but also application state:

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/22bwp4c3nknmnwdo9m9i.jpeg)

This is a great project to learn about Kotlin Multiplatform Mobile and boost your know-how. 100% recommendation.

The project is under Apache 2.0 license.


### 14\. [Smart Recycler Adapter](https://github.com/manneohlund/smart-recycler-adapter)

Here’s a small and generic adapter for RecyclerView with advanced data to ViewHolder binding.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/63omhjeymhppcvci2cn8.png)

The library has lots of features and supports:

*   `OnViewEventListener`
*   `ItemTouchHelper` Swipe, Drag & Drop extensions
*   `ViewTypeResolver`
*   Sticky header
*   Nested adapter
*   `Pagination`, `DiffUtil`, `Filters` and many more.

The project has really good documentation as well as a simple project. All are released under Apache 2.0 license.


### 15\. [Cabaret Log](https://github.com/Foso/Cabret-Log)

> This is an Kotlin Library that enables Annotation-triggered method call logging for Kotlin Multiplatform

We can use an annotation like `DebugLog` to e.g. automatically log all arguments that are passed to some function.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8mvzin4jvitm5aimkpo8.png)

This code will log:

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7eogun555b0mjk8wo9eb.png)

Quite useful, isn’t it? The library has comprehensive documentation with all setup and usage features. It is released under Apache 2.0 license and currently, it has a 1.0.4 version.


### 16\. [SuperBottomBar](https://github.com/ertugrulkaragoz/SuperBottomBar)

This is Spotify-like Android Material Bottom Navigation bar library.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/n992g2rszyk0t7zjnd9t.png)

The library is quite simple and we can use it to see how to implement a custom bottom bar or even use it in our playground project.

The documentation is sufficient but remember that the project is released under an MIT license.


### 17\. [Mosaic](https://github.com/JakeWharton/mosaic)

Mosaic is an experimental tool for building console UI in Kotlin using the Jetpack Compose compiler/runtime.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ffq0rig8i3ycw0dopc9p.png)

The library was developed by Jake Wharton who was inspired by [Ink](https://github.com/vadimdemedes/ink).

> Ink provides the same component-based UI building experience that React offers in the browser, but for command-line apps.

Despite the fact the project is experimental and released as version 0.0.1, the documentation is very comprehensive and includes the purpose of this lib, FAQ, and many samples. All are released under Apache 2.0 license.

### 18\. [LabeledSeekSlider](https://github.com/edgar-zigis/LabeledSeekSlider)

This is a custom and highly configurable seek slider with sliding intervals, disabled state, and every possible setting to tackle.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3qefh3babytpoisssgpl.png)

The library is in version 1.1.0, but the documentation is quite poor. Still, you can deduce all the usage from the code and from the sample app. All are released under an MIT license.


### 19\. [EitherNet](https://github.com/slackhq/EitherNet)

This is a library from Slack Engineering and gives us a pluggable sealed API result type for modeling [Retrofit](https://github.com/square/retrofit) responses.

By default, Retrofit uses exceptions to propagate any errors. This library leverages Kotlin sealed types to better model these responses with a type-safe single point of return and no exception handling needed

So after using this lib, you can achieve something similar:

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fprmsgekpposqm7vw0ki.png)

The project is released in version 1.0.0 under Apache 2.0 license. It is well documented too.


### 20\. [Channelify](https://github.com/aculix/Channelify)

Channelify is an application that showcases the usage of [YouTube Data API v3](https://developers.google.com/youtube/v3). If you do not like to read docs but check most of the features from the API in the code, this project is for you.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/53qy4pmbth5qe3nlfgjx.jpeg)

It features:

*   Latest Videos
*   Channel Playlists
*   Add videos to favorites
*   Channel info and statistics
*   Search
*   Comments and replies
*   Light & dark theme options
*   Push Notifications using Firebase
*   Browse Merchandise Store

The project has really good [documentation](https://channelify.aculix.com/docs/articles/documentation/requirements.html) and it is released under MIT license.


### 21\. [Custom Floating Action Button](https://github.com/robertlevonyan/custom-floating-action-button)

This library was refreshed in 2021. It delivers a replacement for the standard Floating Action Button.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2nj3bw8fo56tabef8hce.png)

It offers a possibility to customize:

*   type of FAB
*   size, colors, icon, ripple effect
*   positions of FAB
*   animations and more


The documentation is well written. The project is released in 3.1.4 version under Apache 2 license.


### 22\. [Testify — Android Screenshot Testing](https://github.com/Shopify/android-testify)

Testify is a library from [Shopify App Devs](https://medium.com/u/b9a2816f90a0) which helps with expanding test coverage by including screenshots tests in your application.

> Capturing a screenshot of your view gives you a new tool for monitoring the quality of your UI experience. It’s also an easy way to review changes to your UI.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qs6q532h0mwjx9mjauly.png)

> Testify screenshot tests are built on top of Android Instrumentation tests and so already integrate seamlessly with existing test suites. Screenshots can be captured directly from within Android Studio or using the Gradle command-line tools.

The library is released under MIT license and currently is in version 0.1.2.


### 23\. [MixAnimationsMotionLayout](https://github.com/rodrigomartind/MixAnimationsMotionLayout)

This is a project where you can find many examples how to use [MotionLayout](https://developer.android.com/training/constraint-layout/motionlayout).

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9vhrg5wt0kkf89flxxmb.png)

In the Github repo, there are examples like:

*   circular carousel picker and carousel helper
*   multi snake cards
*   cards stack
*   instagram stories
*   emoji dance
*   Telegram view

If you want to get to know `MotionLayout`, this repo is for you. Everything is released under Apache 2.0 license.


### 24\. [SpotiFlyer](https://github.com/Shabinder/SpotiFlyer)

This is an open-source Kotlin Multiplatform Music Downloader, which supports Spotify, Youtube, Gaana, Jio-Saavn.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/r87ajpencr8q3i2wn36f.png)

The application features Playlist, Albums, Tracks, and many more. Works on Android, desktop (macOS, Linux, Windows), and web (with iOS support soon).

If you are interested in how to write this kind of app (music player and music downloader) for multiple platforms, this project is for you. It is released under GPL-3.0 License.


### 25\. [Quantitizer](https://github.com/kojofosu/Quantitizer)

This is a highly customizable quantity stepper for Android projects.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uu60p8yad17tgz7bld1v.png)

The library gives you several configuration options, like changing:

*   animation type (`FALL_IN`, `SLIDE_IN`, `SLIDE_IN_REVERSE`, `SWING`) and disabling / enabling it,
*   animation duration,
*   icon background,
*   text and background color etc.

The project is released under MIT license and it has version 1.6.1. The documentation is quite comprehensive and contains also sample app.


### Conclusion

That’s it. I hope you enjoyed the list and that some of the libs or projects inspired you. If you would like to read more, please follow me here on dev.to, on [Twitter](https://twitter.com/mmbialas) and on [Github](https://github.com/mmBs). Thanks for reading ✌️