The first half-year is a great time to sum up what happened in the Android world in terms of inspiring open source libraries and projects.
Below, you will find a list of projects which are really worthy to check, play with, and even apply to your production or side projects. Let’s begin.
Pokedex is a demo project which showcases a modern tech stack with MVVM architecture and repository pattern.
The project is obviously written in Kotlin, uses Coroutines plus Flow for asynchronous tasks and standard networking libs, OkHttp and Retrofit.
Actually, you may say that there is no difference between this and other similar projects. However, there is one major differentiator. It uses lately introduced Dagger Hilt as a DI framework. So if you want to learn Hilt in a real case scenario, the project is good to go. It has fairly good documentation and is released under an Apache 2.0 license.
Github Link – https://github.com/skydoves/Pokedex
Kotlin Coroutines — Use Cases on Android
If you haven’t started using Coroutines yet and you want to grasp it quickly, this project is for you. According to the documentation, it is like a “playground project” where you can “quickly look up and play around with the different Coroutine Android implementations. In the
playground package, you can play around with Coroutines examples that run directly on the JVM.”
README contains lots of examples, from a quite straightforward-performing single network request to more complex, expensive calculations to several Coroutines. It’s really well-written and well-explained. It’s licensed under the Apache License 2.0.LukasLechnerDev/Kotlin-Coroutine-Use-Cases-on-Android🎓 Learning Kotlin Coroutines for Android by example. 🚀 Sample implementations for real-world Android use cases. 🛠…github.com
AnimatedBottomBar is a customisable and easy-to-use bottom bar view with sleek animations.
The library is noteworthy. It has really comprehensive documentation with many samples of usage. It’s in a version
1.0.+ and supports API 16+. It was released under an MIT license, so don’t forget to mention the author in your code.Droppers/AnimatedBottomBarA customizable and easy to use bottom bar view with sleek animations. Download the playground app: demo.apk. In this…github.com
Motion Toast is a beautiful multipurpose motion toast library in Android using Kotlin.
The library offers five toast types, with a possibility to customise:
- duration time,
- theme (light/dark),
- styles (motion or color motion toasts)
The documentation is good and full of examples. The usage is easy. It supports API 21 + and is released under an MIT license.Spikeysanju/MotionToastA Beautiful Multipurpose Motion Toast Library in Android using Kotlin 😍 1. Motion Toast 2. Color Motion Toast 3. Dark…github.com
It’s implemented according to the rules, where you code declaratively with strong types and everything should be easy (inflating rows, creating common custom items, etc.).
The library is in version
0.1.4, so I wouldn’t recommend it for production code. But still, it represents a really good approach for implementing adapters and managing
RecyclerViews. What is interesting is that the documentation says that
“You can ask the API to create the RecyclerView object for you — using the
createmethod – or configure an existing instance – through the
adoptmethod. The latter is useful if you already have a layout which the recycler view is part of.”
The documentation is comprehensive. The project contains a showcase app and is released under an Apache 2.0 license.square/cyclerThe Square Cycler API allows you to easily configure an Android RecyclerView declaratively in a succinct way. It should…github.com
Zoom Recycler Layout
Let’s stay a little bit with
RecyclerView. Zoom Recycler Layout is a cool-looking zoom animation library for
RecyclerView items written in Kotlin.
Actually, this is one class which extends
LinearLayoutManager and overrides two functions:
scrollHorizontallyBy(). Still, you can treat it as an inspiration for cool-looking vertical or horizontal lists. The project is released under an Apache 2.0 license and supports API 11+.Spikeysanju/ZoomRecylerLayoutAn beautiful Zoom Animation Library for RecyclerView Items in Android using Kotlin. 1. Horizontal Scroll 2. Vertical…github.com
Currently, it integrates:
If you plan to use Jetpack Compose and want to have a cool-looking material design theme or image loading with Coil, this project is for you. It has comprehensive documentation and is released under an Apache 2.0 license.chrisbanes/accompanistAccompanist is a group of libraries which contains some utilities which I’ve found myself copying around projects which…github.com
The README is really short, but the author explained the main idea and approach in his article, so this is a good start. You can treat this project as a way of learning Jetpack Compose, based on lovely looking examples. There is no information about the version. It’s released under an MIT license. It’s worth checking out.ahmedrizwan/JetpackComposeCalculatorYou can’t perform that action at this time. You signed in with another tab or window. You signed out in another tab or…github.com
There is no README whatsoever, only code and an Apache 2.0 license. Enjoy.adibfara/ComposeClockThis project is inspired by Flutter Particle Clock. Copyright 2018 Adib Faramarzi. Licensed under the Apache License…github.com
This is a free resource that provides snippets and practical samples on how to use Jetpack Compose for the Android platform.
According to the documentation, “the project is split up by API, with the intention of removing friction when trying to find the sample that you want to explore.”
Joe split the documentation into eight main sections:
The repo lives, and it changes from time to time. It is definitely worthy of following if you want to be on track with novelties from Jetpack Compose. Highly recommended!hitherejoe/ComposeAcademy-PlaygroundCompose Academy Playground is a free resource that provides snippets and practical samples on how to use Jetpack…github.com
Let’s go back to good old Java (in 49.2%). Several months ago, ProtonMail open-sourced its Android app.
This is a good source to check out for how to approach the design of a really safe Android application. The project has quite comprehensive documentation with a manual and how to set up the app. It’s all released under a GPL-3.0 License.ProtonMail/proton-mail-androidCopyright (c) 2020 Proton Technologies AG The code and data files in this distribution are licensed under the terms of…github.com
kotlin-android-template is a simple Github template that lets you create an Android/Kotlin project which can be up and running in a few seconds. The documentation says that “this template is focused on delivering a project with static analysis and continuous integration already in place 100% in Kotlin.”
- three sample modules (Android app, Android library, Kotlin library)
- Sample Espresso, Instrumentation, and JUnit tests
- 100% Gradle Kotlin DSL setup
- Dependency versions managed via
- CI setup with GitHub Actions
- Kotlin static analysis via
- Publishing ready
- Issues template (bug report plus feature request)
- Pull request template
If you are in a hurry or preparing a recruitment task, probably this repo is worth checking out. However, it is released under an MIT license.cortinico/kotlin-android-templateA simple Github template that lets you create an Android/Kotlin project and be up and running in a few seconds. This…github.com
The documentation describes it like this:
“ThemedToggleButtonGroup is a highly modular lightweight toggle button library for Android. It can be configured for single selection or multi selection. For multi-selection the minimum/maximum amount of buttons that are required/enabled can be specified. Icons can be added. Selection includes a fun press and circular reveal animation.”
README is really good and full of examples. The project supports API 14+, currently has version 1.3.1 , and is released under an MIT license.Bryanx/themed-toggle-button-groupCustomisable toggle buttons inside a FlexboxLayout. ThemedToggleButtonGroup is a highly modular lightweight toggle…github.com
CleanRXArchitecture is a project based on the principles of clean architecture and MVI (model view intent) for the presentation layer.
The showcase app is a multimodule project connected to the GitHub API that allows the author to list all their public repositories. It can be used while disconnected, with a backup of all the data stored in a database (Room). Dark mode is also available. The entire application is covered, with unit, UI, and functional/integration (= use case) tests. It uses libs like Dagger 2, RxJava 3, Room, and AndroidX.
In this repository, you will also check out different tools and good practices (with Git and more).
The documentation is comprehensive. It’s released under an Apache 2.0 license.lopspower/CleanRxArchitectureIt’s time to make a technical assessment now that I’ve been in Android development since 2011 including 5 years in…github.com
The project is well explained on Medium as well. You can treat is as a showcase, how to create this kind of animation. It has four types of properties:
android:text(string) -> default “Loading”
android:textSize(dimension) -> default 56sp
android:textColor(color) -> default #484848
app:light_color(color) -> default #FFFFFF
What’s more, it supports API 16+, is at version 1.0.1 , and is released under an Apache 2.0 license.bitvale/LightProgressCreated this cool Light animation from Oleg Frolov as android library. Just add LightProgress view in your layout XML…github.com
Corona Warn App
We live in COVID times, so the Corona Warn App could not be missed here.
“The goal of this project is to develop the official Corona-Warn-App for Germany based on the exposure notification API from Apple and Google. The apps (for both iOS and Android) use Bluetooth technology to exchange anonymous encrypted data with other mobile phones (on which the app is also installed) in the vicinity of an app user’s phone. The data is stored locally on each user’s device, preventing authorities or other parties from accessing or controlling the data. This repository contains the native Android implementation of the Corona-Warn-App. Visit our FAQ page for more information and common issues.” — Corona Warn App documentation
The application is created by SAP and Deutsche Telekom developers. There is also great documentation that explains lots of aspects of this project, which is released under an Apache 2.0 license.corona-warn-app/cwa-app-androidDevelopment * Documentation * Contribute * Support * Changelog * Licensing The goal of this project is to develop the…github.com
KaMP Kit is a collection of code and tools designed to get you or your mobile team started quickly with Kotlin Multiplatform.
You can treat it as a great resource to learn. The KaMP Kit is designed to get you past that primary stumbling block. From the documentation:
1. The Starter App — A native mobile KMP app with a small functional feature set.
2. Educational Resources — Introductory information on KMP and Kotlin/Native.
3. Integration Information — If you’re integrating shared code into an existing application, guides to assist with that effort.”
Kissme is an abbreviation of Kotlin Secure Storage Multiplatform. Kissme can be integrated seamlessly in Kotlin projects built with Kotlin Multiplatform, Kotlin/Native, and Kotlin Android plugins. It allows storing key-value data in common code modules without any additional boilerplate code.
Currently, the library supports the following platforms:
- Android (API 23+)
- iOS (iOS_arm64 and iOS_x64 targets)
The documentation is really comprehensive, but still, the project is in version 0.2.5. It is released under an Apache 2.0 license.netguru/KissmeKissme: Kotlin Secure Storage Multiplatform. Contribute to netguru/Kissme development by creating an account on GitHub.github.com
DeterminateProgressView is a highly customisable and easy-to-style circular progress view.
The documentation states that “it is built with Kotlin and supports heavy customisation options and a convenient way to animate progress automatically.”
You can use XML and Kotlin/Java functions to adapt it. Also, there is a very robust demo app. README includes all ways to style the widget, as well as a great description of all XML and text attributes. You need to check into it for sure. The project is released under an MIT license and is in version 1.4.0.owl-93/Determinate-Progress-ViewThis view is meant to be a customizable determinate progress view like the standard android indeterminate progress bar…github.com
Venom is a lightweight tool that simplifies testing of the process death scenario for your Android application.
The project was created for testing applications against aggressive Android runtime behaviours. From time to time, Android terminates background applications while the user is away interacting with other apps. In such a case, all the activities are destroyed along with application scope objects and background tasks. After that, we should be always sure that our apps present a consistent interface and are tested against the process death scenario.
Venom is quite easy to use and has fairly good documentation. It is released under an MIT license. It is currently in version 0.3.1.YarikSOffice/venomVenom is a lightweight tool that simplifies testing of the process death scenario for your android application. The…github.com
RateBottomSheet is a library to help you promote your Android app by prompting users to rate your app in a bottom sheet.
As you probably know, Google released a new API for in-app reviews. It’s really cool but works only from API 21. If you, for several reasons, cannot use this API, you can try the RateBottomSheet library. It supports API 16+ and is well-designed. The project contains a sample app, has well-written documentation, and is released under an Apache 2.0 license.lopspower/RateBottomSheetThis an Android library to help to promote your Android App by prompting users to rate your app in the Google Play…github.com
Decorator is a library that helps to create margins and dividers in
The idea of this project is also to compose multiple decorations and apply it to
RecyclerView. It is quite useful. What’s more, it has really comprehensive documentation, and there is a sample project which showcases the usage.
It is in version 1.2.0 and released under an Apache 2.0 license.cabriole/DecoratorIn Android, when you work with RecyclerViews, the standard way of working with paddings and margins is to work with…github.com
CornerCutLinearLayout is great lib which allows
LinearLayout corner (parent and children) cuts, complex shadows, and dividers.
LinearLayout extension is really well-documented. To be honest, I have not seen this kind of Java doc for a long time. Also, README is awesome.
Additionally, using available properties and custom providers, those cuts you make with CornerCutLinearLayout may be turned into cutouts of different shapes, sizes, etc.
The documentation says that the “widget’s sole purpose is to use with children with no transformations (like rotation, scale, matrix transformations).”
The project is released under an Apache 2.0 license and is in version 1.0.1.Devlight/CornerCutLinearLayoutCornerCutLinearLayout extends LinearLayout . It allows cutting parent corners with different shapes and build proper…github.com
According to the documentation,
“Recycling Center is a library designed to support a pattern: reactive, unidirectional data flow using immutable ViewModels. It combines the reactive data flow of RxJava with the efficient UI of a RecyclerView, and supports UI composition via Sections of Views and ViewModels.”
The best way to check how this library works is to go to the sample and understand how that works. Also, the README is fairly good. The project is released under a BSD-3-Clause License.Snapchat/recycling-centerRecycling Center is a library designed to support a pattern: reactive, unidirectional data flow using immutable…github.com
TickTock is a timezone data management library for the JVM and Android targeting
java.time APIs in Java 8+. The documentation says to
“Use this library if you want to bundle timezone data directly with your application rather than rely on the current device timezones (Android) or the default
<java.home>/libversion (JVM only).”
The library is also inspired a little by LazyThreeTenBp. The documentation is good and the project itself is easy to use. The author, Zac Sweers, also wrote an article about the lib. It’s released under an Apache 2.0 license.ZacSweers/ticktockTickTock is a timezone data management library for the JVM and Android targeting java.time.* APIs in Java 8 or above…github.com