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, 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 and The 25 Best Android Libraries and Projects of 2020 — Summer Edition.
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!
This is a simple application for tracking your expenses.
The project was built to showcase the usage of Android modern development components based on MVVM architecture, like:
- Android Architecture Components, especially: Stateflow, Flow, ViewModel , Room, Jetpack Navigation, DataStore, and Material Components for 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.
Here is a customisable, easy-to-use, and functional circular time range picker library.
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.
The library is copyrighted under an MIT license.
This is another customizable bottom bar library with curved animations and Jetpack Navigation support.
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.
Curtains provides centralized APIs for dealing with Android windows.
This library is developed by Py ⚔ 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 or ignoring touch events during transitions.
Knowing when root views are detached, e.g. to detect if they might be leaking (LeakCanary).
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, 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.
Here’s another interesting library for creating elegantly rounded
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.
The project has version 2.1.0 and is released under the Apache License, Version 2.0.
This is a library for creating beautiful surveys on Android.
The project is covered with tests (which is not so common) and released under an MIT license.
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.
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.
SegmentedProgressBar is an Instagram-like segmented progress bar.
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.
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.
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!
This is an implementation of a simple yet beautiful image picker.
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.
All is released under Apache 2.0 license, written 100% in Kotlin.
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.
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.
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.
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.
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:
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.
Here’s a small and generic adapter for RecyclerView with advanced data to ViewHolder binding.
The library has lots of features and supports:
ItemTouchHelperSwipe, Drag & Drop extensions
- Sticky header
- Nested adapter
Filtersand 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
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.
This code will log:
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.
This is Spotify-like Android Material Bottom Navigation bar library.
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.
Mosaic is an experimental tool for building console UI in Kotlin using the Jetpack Compose compiler/runtime.
The library was developed by Jake Wharton who was inspired by 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.
This is a custom and highly configurable seek slider with sliding intervals, disabled state, and every possible setting to tackle.
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.
This is a library from Slack Engineering and gives us a pluggable sealed API result type for modeling 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:
The project is released in version 1.0.0 under Apache 2.0 license. It is well documented too.
Channelify is an application that showcases the usage of YouTube Data API 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.
- Latest Videos
- Channel Playlists
- Add videos to favorites
- Channel info and statistics
- Comments and replies
- Light & dark theme options
- Push Notifications using Firebase
- Browse Merchandise Store
The project has really good documentation and it is released under MIT license.
This library was refreshed in 2021. It delivers a replacement for the standard Floating Action Button.
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.
Testify is a library from Shopify App Devs 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.
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.
This is a project where you can find many examples how to use MotionLayout.
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.
This is an open-source Kotlin Multiplatform Music Downloader, which supports Spotify, Youtube, Gaana, Jio-Saavn.
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.
This is a highly customizable quantity stepper for Android projects.
The library gives you several configuration options, like changing:
- animation type (
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.
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 and on Github. Thanks for reading ✌️