by Michal Bialas

The 30 Coolest Android Libraries from Spring 2017


These are my 30 favorite new Android libraries that have come out since March 2017. Some of them aren’t production ready yet, but you may have lots of fun using them. I hope you enjoy these.

Here they are in no particular order:

1. Matisse

This is a beautiful local images and videos selector. Main functionalities:

  • Selecting images including JPEG, PNG, GIF and videos including MPEG, MP4,
  • applying custom themes, including two built-in ones,
  • different image loaders,
  • defining custom filter rules,
  • fully operational within Activities and Fragments.

You can find more in the lib’s wiki.


Matisse - :fireworks: A well-designed local image and video selector for

2. Spruce Android Animation Library

Spruce is a lightweight animation library that helps choreograph the animations on the screen. With so many different animation libraries out there, developers need to make sure that each view is animating at the appropriate time. Spruce can help designers request complex multi-view animations and not have the developers cringe at the prototype.

spruce-android - Spruce Animation

3. MaterialChipsInput

Chips were presented in Material Design. They

represent complex entities in small blocks, such as a contact. A chip may contain entities such as a photo, text, rules, an icon, or a contact.

MaterialChipsInput is an implementation of that component for Android. The library provides two views : ChipsInput and ChipView.


MaterialChipsInput - Implementation of Material Design Chips component for

4. Grav

This library allows to create multiple animations based on points. Take a look — how smooth and beautiful animations you can make quite easily. README contains a lot of examples so you might check it here.


Grav - Configurable animations based on

5. Litho

Litho is not a library, it is a framework. A really powerful framework to build UI in a declarative way. It was developed by Facebook devs, so even if you do not want to try it, still it is worthy to observe and follow a development process.


Main features include:

  • using a declarative API to define UI components. You simply describe the layout for your UI based on a set of immutable inputs and the framework takes care of the rest.
  • Asynchronous layout: Litho can measure and layout your UI ahead of time without blocking the UI thread.
  • View flattening: Litho uses Yoga for layout and automatically reduces the number of ViewGroups that your UI contains.
  • Fine-grained recycling: Any component such as a text or image can be recycled and reused anywhere in the UI.

litho - A declarative framework for building efficient UIs on

6. Adaptable Bottom Navigation

Some time ago Google updated Material Design guideline, and introduced bottom navigation bars, as one of several good UI patters to follow in our apps. They also added the implementation to the Design Support Library.


Adaptable Bottom Navigation can easily replace BottomNavigationView from Support Library. It is implemented in the way how ViewPager and TabLayout work. This is a short explanation from Buffer team:

As mentioned, when using the Bottom Navigation View from the Android Support Library, there can be a lot of boilerplate code for the switching of views. Because of this, we took inspiration from the TabLayout setupWithViewPager() method and created a custom ViewSwapper component that can be attached to a Bottom Navigation View to simplify the management of view display.

You can read more on Github. There is a quite comprehensive documentation and explanation why it was implemented (tip: clean architecture ? ).


AdaptableBottomNavigation - A simpler way for implementing the Bottom Navigation View on

7. PatternLockView

This library allows you to implement pattern locking mechanism in your app easily and quickly. It is very easy to use and there are plenty of customization options available to change the functionality and look-and-feel of this view to match your needs.
It also supports RxJava 2 view bindings, so if you are a fan of reactive programming (just like me), you can get a stream of updates as the user draws the pattern.

The README is full of examples, so it is easy to start with the library.


PatternLockView - An easy-to-use, customizable and Material Design ready Pattern Lock view for

8. Isometric

This is a library which helps to draw isometric shapes. In my opinion, it is one of the coolest libraries in that list, as it reminds me of Monument Valley game.
The library supports drawing multiple shapes, paths and complex structures, like the example below.


Isometric drawing library for

9. UltraViewPager

We can treat this library as a ViewPager extension that encapsulates many features, mainly to provide a unified solution for multi-page switching scenarios.


UltraViewPager supports:

  • horizontal scrolling and vertical scrolling,
  • multi views in one ViewPager
  • switching views circularly. For example, if there are 3 views to display in a ViewPager, it should switch back to the first view after the third view,
  • auto-scrolling feature (implemented timer using Handler),
  • setting max-height and max-width,
  • setting the aspect ratio,
  • indicating the view we are currently (circle and icon),
  • built-in two kinds of page transition animations.

This library has a good documentation as well.

UltraViewPager is an extension for ViewPager to provide multiple features in a single

10. InfiniteCards

This library helps to implement UI cards and then switch them with a nice animation.


Android-InfiniteCards - An infinite card switching UI for Android, support custom animation 可自定义动效的卡片切换视图

11. SlidingRootNav

This is a library which we can consider as a DrawerLayout-like ViewGroup, where a drawer is hidden under the content view, and then can be shifted to make the drawer visible. REAMDE is quite comprehensive and it is worthy to check for sure.


SlidingRootNav - DrawerLayout-like ViewGroup, where a "drawer" is hidden under the content view, which can be shifted…

12. PasscodeView

It is just a view where you can type your password. But fancy one!


Material Design PasscodeView for

13. MusicWave

This library allows to represent sound as a gradient colored visualisation.


With MusicWave represent your Sound in a gradient colored

14. ShadowImageView

This library helps you to add more meaningful shadow to your images. According to README, it is

More exquisite shadow effect, used in some special scene to enhance the user experience.

Also, it is easy to use.


ShadowImageView - ?可以根据图片内容变阴影颜色,更加细腻的阴影效果 It can change color according to the picture, more delicate shadow

15. PolygonDrawingUtil

This is an efficient Android utility class for drawing regular polygons on a Canvas. We can specify:

  • Number of sides (≥ 3),
  • center coordinates,
  • outer radius (center to vertex),
  • corner rounding radius,
  • polygon rotation,
  • fill/stroke Paint.

PolygonDrawingUtil - An efficient Android utility class for drawing regular polygons on a

16. Tiny

This is a second framework on that list. It is responsible for image compression and it is quite powerful. Also, it

uses asynchronous thread pool to compress image, and will hand out the result in the main thread when compression is completed.
Effects of compression

Tiny - an image compression

17. ParticleTextView

This library provides a custom TextView widget, which can create text from particles using a variety of animation effects and configuration properties.


ParticleTextView - 一个用粒子动画显示文字的 Android 自定义

18. CropIwa

This is a highly configurable widget for image cropping. The library has a modular architecture, which makes it highly configurable. For the info on how to configure CropIwaViewrefer to the wiki on Github.


cropiwa - ? Configurable Custom Crop widget for

19. Project Condom

This is a thin library to wrap the naked Context in your Android project before passing it to the 3rd-party SDK. It is designed to prevent the 3rd-party SDK from common unwanted behaviors which may harm the user experience of your app.

And here is the explanation:

Massive launch of processes in other apps (common in 3rd-party push SDKs), causing slow app starting and notable lagging on low to middle-end devices. This behavior has chain reaction effects among apps with similar SDKs, greatly aggravating the overall device performance.

condom - 一个超轻超薄的Android工具库,阻止三方SDK中常见的有害行为,而不影响应用自身的功能。(例如严重影响用户体验的『链式唤醒』)

20. AppMethodOrder

This library allows you to trace all functions calls order. The project is well documented and you can find detailed manuals how to use it. The only constraint is that, it is written in Chinese, but you can always click Translate to English in your browser and enjoy this great project.


AppMethodOrder - 一个能让你了解所有函数调用顺序以及函数耗时的Android库(无需侵入式代码)

21. Android DebugKit

This is an interesting library. It allows you to create and use special hovering debug tool, to trigger actions defined by you in an application. These actions can be obviously triggered in runtime, so it may be used for instance during feedback writing or testing a phone screen.
The library uses Builder pattern. It is easy to use and in README, there is one example of the usage.


debugkit - Ever hid debug functions in your UI? Here is now a clean way to do it!

22. Aesthetic

This a fresh library and still in beta, but it does a really cool thing — it changes your theme dynamically with Rx support! According to the author, this is

A fast and easy to use plug-and-play dynamic theme engine. Powered by Rx, for Android apps.

The documentation is really good, comprehensive and definitely worthy to check out.


aesthetic - [BETA] A fast and easy to use plug-and-play dynamic theme engine. Powered by Rx, for Android

23. EasyCalendar

This is an easy custom calendar widget. Main features include:

  • Custom layout for title,
  • custom layout for date,
  • show or hide divider for date,
  • show or hide overflow date,
  • listen to date’s view be clicked.

The documentation is comprehensive and the library is easy to use.


Quickly customize the calendar UI. You can use EasyCalendar to quickly get the calendar style

24. SimpleRatingBar

This library provides two rating bars:

  • BaseRatingBar — without any animation,
  • ScaleRatingBar — with a progressive and scale animation.

You can see them in a gif below:


SimpleRatingBar - A simple RatingBar with scale

25. Magellan

This library is advertised as the simplest navigation library for Android, but you need to check if it is worthy for you to use it.
Main features:

  • Navigation is as simple as calling goTo(screen) method,
  • you get full control of the backstack,
  • transitions are automatically handled for you.

It has comprehensive wiki with all explanations needed.


magellan - The simplest navigation library for

26. ViewPagerAnimator

ViewPagerAnimator is a new lightweight, yet powerful ViewPager animation library for Android. it is designed to animate arbitrary values as the user navigates between pages within a ViewPager, and will precisely follow the motion of h[is|er] finger. Although the library itself may be of use to some, the main purpose of publishing this library is to demonstrate some wonderful API subtleties which really come to the fore when using Java 8 extensions which are coming our way soon. Sample projects for both Java 7 and Java 8 are provided.

It is written by Mark Allison and you can get more info on his Styling Android blog.


ViewPagerAnimator - A lightweight, yet powerful ViewPager animation library for

27. BlockCanaryEx

This is a library, which facilitates finding heavy methods in your code when your app blocked. It is based on BlockCanary.


BlockCanaryEx — make performance bottleneck detection easily when app

28. PaletteImageView

This is quite cool library. It adds a shadows to your images, but the color of shadow is in a dominant image color.


Documentation is quite poor but I think the code is self-explanatory.

PaletteImageView - 为图片添加阴影,阴影颜色来源于图片的主色

29. RecyclerRefreshLayout

This is a refresh animation that opens a camera shutter. In my opinion it is really worthy to check, especially in README there is a mathematical analysis, how to achieve this effect!


ShootRefreshView - It's an refresh animation that opens the

30. SlimAdapter

This is an approach to write an Adapter without ViewHolder. Key features include:

  • No ViewHolders,
  • no reflection,
  • fluent & simple API,
  • multi-typeable adapter,
  • Kotlin support,
  • Simple DiffUtil support.

SlimAdapter - A slim & clean & typeable Adapter without#

That’s it. I hope you enjoyed the article! If I didn’t mention any other great libraries released in this Spring, please let me know in the comments below. Let’s keep that list bigger together!

If you like my article, please don’t forget to click ??? to recommend it to others ???.

Also, to be notified about my new articles and stories, follow me on Medium and Twitter. You can find me on LinkedIn as well. Cheers!