The 25 Best Android Libraries and Projects of 2020 — Summer Edition

25 Best Android Libraries And Projects Of 2020

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

Pokedex is a demo project which showcases a modern tech stack with MVVM architecture and repository pattern.

Image for post

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.”

Image for post

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

AnimatedBottomBar is a customisable and easy-to-use bottom bar view with sleek animations.

Image for post
Image for post
Image for post

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

Motion Toast is a beautiful multipurpose motion toast library in Android using Kotlin.

Image for post

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


Cycler

Cycler is another cool library from Square Engineering. The documentation says that it “allows you to easily configure an Android RecyclerView declaratively in a succinct way.”

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 create method – or configure an existing instance – through the adopt method. 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 RecyclerViewZoom Recycler Layout is a cool-looking zoom animation library for RecyclerView items written in Kotlin.

Image for post

Actually, this is one class which extends LinearLayoutManager and overrides two functions: scrollVerticallyBy() and 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


Accompanist

Accompanist is a group of libraries that contains some utilities that Chris Banes created and found himself copying around projects that use Jetpack Compose.

Image for post

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


JetpackComposeCalculator

JetpackComposeCalculator is a cool example of where Accompanist could be used. Ahmed Rizwan cloned the Android 10 calculator UI using Jetpack Compose.

Image for post

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


ComposeClock

Do you remember this Flutter clock challenge? If so, you also remember who and what project won. Based on that design, an author of ComposeClock prepared a Jetpack Compose version.

Image for post

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


Compose Academy

As a summary of projects created by using Jetpack Compose, you need to check out Compose Academy Playground by Joe Birch.

Image for post

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


ProtonMail

Let’s go back to good old Java (in 49.2%). Several months ago, ProtonMail open-sourced its Android app.

Image for post

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

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.”

It supports/includes:

  • three sample modules (Android app, Android library, Kotlin library)
  • Sample Espresso, Instrumentation, and JUnit tests
  • 100% Gradle Kotlin DSL setup
  • Dependency versions managed via buildSrc
  • CI setup with GitHub Actions
  • Kotlin static analysis via ktlint and detekt
  • 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


ThemedToggleButtonGroup

ThemedToggleButtonGroup is customisable toggle buttons inside a FlexboxLayout.

Image for post
Image for post

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

CleanRXArchitecture is a project based on the principles of clean architecture and MVI (model view intent) for the presentation layer.

Image for post

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


LightProgress

LightProgress is an Android implementation of Light animation from Oleg Frolov.

Image for post

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

KaMP Kit is a collection of code and tools designed to get you or your mobile team started quickly with Kotlin Multiplatform.

Image for post
Image source: https://github.com/touchlab/KaMPKit

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:

“What’s Included?
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.”

touchlab/KaMPKitThe goal of the KaMP Kit is to facilitate your evaluation of Kotlin Multiplatform (aka KMP). It is a collection of code…github.com


Kissme

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

DeterminateProgressView is a highly customisable and easy-to-style circular progress view.

Image for post

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

Venom is a lightweight tool that simplifies testing of the process death scenario for your Android application.

Image for post

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

RateBottomSheet is a library to help you promote your Android app by prompting users to rate your app in a bottom sheet.

Image for post

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

Decorator is a library that helps to create margins and dividers in RecyclerView.

Image for post

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

CornerCutLinearLayout is great lib which allows LinearLayout corner (parent and children) cuts, complex shadows, and dividers.

Image for post

This 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


Recycling Center

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.”

Image for post

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

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>/lib version (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

Tags:

Leave a Reply

Your email address will not be published. Required fields are marked *