It’s been over a year since I released my last article about Android libraries. Now, I’m back with a summary of awesome libraries and projects released (or heavily refreshed) in 2019. They’re not in ranked order. Let’s begin!
Nội dung chính của bài viết
- 1 1. Coil
- 2 2. MultiSearchView
- 3 4. Bubble Navigation
- 4 5. FabFilter
- 5 6. SmoothBottomBar
- 6 7. android-showcase
- 7 8. Balloon
- 8 9. LiquidSwipe
- 9 10. Croppy
- 10 11. Glimpse
- 11 12. RubberPicker
- 12 13. AndroidFastScroll
- 13 14. Switcher
- 14 15. StfalconImageViewer
- 15 16. Store 4
- 16 17. Broccoli
- 17 18. ProgressButton
- 18 19. GradientView
- 19 20. Contour
- 20 21. Orbit MVI
- 21 22. CircularProgressBar
- 22 23. Waterfall Toolbar
- 23 24. Press
- 24 25. AndroidColorX
- 25 26. IndicatorScrollView
- 26 27. Cyanea
- 27 28. Material Dialogs for Android
- 28 29. Uniflow
- 29 30. Android MotionLayout Carousel
- 30 Conclusion
Coil is a really fresh approach to image loading on Android.The acronym of this library stands for coroutine image loader. The library is fast, lightweight (~1500 methods), easy to use, and modern, especially in comparison to libraries like Glide, Picasso, or Fresco. It supports GIFs and SVGs and can do four default transformations: blur, circle crop, grayscale, and rounded corners.
Code example below:
The documentation and code samples are more than enough to start using it without any hesitation. Everything is clear and easy. Currently the lib is in a version 0.9.5.
Fun fact: During the last three months, I interviewed 14 candidates, and no one knew about Coil. Be cool, and impress your interviewer by mentioning Coil. Even Google made a mistake about an author when they wrote about Coil in their “Loading Large Bitmaps Efficiently” article. Regardless, it’s fixed now.coil-kt/coilAn image loading library for Android backed by Kotlin Coroutines. Coil is: Fast: Coil performs a number of…github.com
This library has a really cool approach to an animated search view.
It’s easy to set up and is customisable — you can add your style’s set under
The README is quite short, but I believe it’s OK. This is version 0.1, so I wouldn’t use it in production. Rather, I’d treat it like a great lib for a playground project to have some fun in.
It was released under the Apache 2.0 license.iammert/MultiSearchViewYet another built-in animated search view for Android. All design credits goes to Cuberto And inspired from this design…github.com
This is a highly customizable calendar library, powered by
It has lots of features:
- Single or range selection
- Week or month mode
- Boundary dates
- Custom calendar view
- Horizontal- or vertical-scrolling mode
- Fully customizable views
- And much more
The documentation is really comprehensive and full of examples. What’s more, there’s a sample app that showcases every feature of the library.
It’s written 100% in Kotlin and released under MIT license. If you need a calendar view in your application, I believe this one is good to go, despite the fact it’s still in version 0.3.2 (at the time of this article).kizitonwose/CalendarViewA highly customizable calendar library for Android, powered by RecyclerView. With this library, your calendar will look…github.com
This is a fresh approach to a navigation — a light-weight library to easily make beautiful navigation bars with a ton of customisation options.
It has many cool features:
- Two types of
NavigationViews for different use cases: The
packedmodes) and the
BubbleNavigationLinearView(allows equal distribution, using weight or packed mode)
- It’s highly customizable
- You can add badges, and it has the
BubbleToggleViewto create new UI components, other than just the navigation
The README file is quite detailed and explains how to use all of the components to achieve this cool-looking UI. You can always check the sample app. The project was released under the Apache 2.0 license.gauravk95/bubble-navigation? A light-weight library to easily make beautiful Navigation Bars with a ton of ? customization options.github.com
It’s a really interesting project — with two correlated articles on Medium:
SmoothBottomBar describes itself as “a lightweight Android material bottom navigation bar library.”
The library was implemented according to an Alejandro Ausejo Dribble project. Currently, it is in version 1.7, written in Kotlin under MIT license. The documentation is rather short but sufficient to use it quickly in your project. There is also a sample application.ibrahimsn98/SmoothBottomBarA lightweight Android material bottom navigation bar library – ibrahimsn98/SmoothBottomBargithub.com
This project brings to the table a set of best practices, tools, and solutions:
- 100% Kotlin
- Modern architecture (feature modules, clean architecture,
- Android Jetpack
- A single-activity architecture, using the
navigationcomponent to manage fragment operations
- Reactive UI
- CI pipeline
- Static-analysis tools
- Dependency injection
- Material design
In my opinion, it’s really a great source. The README file is clear and comprehensive — with additional graphs presenting an architecture, data flow, and CI. It doesn’t matter, whether you work on modularisation, clean architecture, tests, or setting up CI/CD tools, thanks to this project, you’ll be always inspired. Kudos to the author.igorwojda/android-showcaseShowcase is a sample project that presents modern, 2019 approach to Android application development using Kotlin and…github.com
This is a library that provides a lightweight pop-up with tool tips, fully customizable with arrows and animations. You can see how it works below.
minSdk 16 and is released under the Apache 2.0 license with version 1.1.0. The documentation is full of examples and is also backed up by a sample showcase app.skydoves/Balloon? A lightweight popup like tooltips, fully customizable with arrow and animations. Add below codes to your root…github.com
LiquidSwipe is a library that’s based on
ViewPager and can be used to make beautiful on-boarding designs.
The README fileis comprehensive. Usage of the library is also quite easy and comes down to using
LiquidSwipeViewPager instead of the normal
Currently, it’s on version 1.3 and is released under the MIT license, supporting
minSdk 21 and above.Chrisvin/LiquidSwipeAndroid LiquidSwipe Library LiquidSwipe is a viewpager library that can be used to make awesome onboarding designs. (…github.com
This is yet another approach to image cropping for Android.
The library has many cool features:
- Double-tap focus
- Pinch to zoom
- Free mode (cropping in any size)
- Aspect-ratio mode (cropping with predefined aspect ratios, like 16:9, 4:3, etc.)
- Displaying the size of a cropped bitmap
- Autocentering the bitmap when cropping
- Fully animated usage experience
The documentation is enough to get stared, but bare in mind, this is in version 0.2. The project is released under the Apache 2.0 license.lyrebirdstudio/CroppyStart croppy (source uri is the original image.) val cropRequest = CropRequest.Auto(sourceUri = uri, requestCode = 101)…github.com
Let’s stay with cropping tools for a little bit. Glimpse is a content-aware cropping library for Android, and it’s awesome that these kinds of libraries are created and open sourced.
As you can see above, instead of center-cropping images blindly, Glimpse catches the right spot.
But how? It uses TensorFlow Lite underneath with a proper model. What’s also great is it supports Coil and Glide. You should check out the README file for sure because it’s really extensive, and you’ll learn a lot. It’s released under the Apache 2.0 license. Maybe it’s not ready for production yet, but I still highly recommend it.the-super-toys/glimpse-androidA content-aware cropping library for Android. Give the right first impression with just a glimpse! Instead of center…github.com
This is an animated and interesting approach to
The RubberPicker library contains the
RubberRangePicker, inspired by Cuberto’s rubber-range-picker for iOS.
The docs will tell you how to start and also what’s on the to-do list. Maybe you’ll find time to contribute to that project. Currently it’s in version 1.4, and it’s released under the MIT license.Chrisvin/RubberPickerRubberPicker library contains the RubberSeekBar and RubberRangePicker, inspired by Cuberto’s rubber-range-picker. Add…github.com
This library adds a fast scroll for your
RecyclerView and more.
The main features, according to the README file, are:
• Fully customizable: Override track, thumb, popup, animation and scrolling.
• Easy-to-use defaults: Predefined default style, Material Design 2 style and animation.
• Extensive view support: Out-of-box support for
WebView, plus any view with a
• Window insets friendly: Support setting a separate padding for scrollbar.
• Clean implementation: Decoupled touch handling, animation and scrolling logic.
There’s also a preview app available on Google Play. The project has good documentation and is released under the Apache 2.0 license, so if you have a reason to include fast scroll — e.g., on a contact list — this library is a good choice.zhanghai/AndroidFastScrollFast scroll for Android RecyclerView and more. This is not an officially supported Google product. Fully customizable…github.com
This is a library that provides a custom, animated
It’s based on a Dribble design from Oleg Frolov and is released under theApache license 2.0. It supports Android KitKat (
minSdk 19) and is quite straightforward to use.bitvale/SwitcherCreated this cool switch animation from Oleg Frolov as an android library. Just add Switcher view in your layout XML…github.com
Despite the fact it was released in December 2018, I wanted to put this lib on my list because I believe it deserves to be. This library is simple and customizable. It contains a full-screen image viewer with shared image-transition support, pinch-to-zoom functionality, and swipe-to-dismiss gestures.
The documentation explains how to use every feature. Also noteworthy: The library is compatible with all of the most popular image-processing libraries, such as
Glide, etc. It’s in a version 1.0.0. There’s also a sample project.stfalcon-studio/StfalconImageViewerA simple and customizable full-screen image viewer with shared image transition support, “pinch to zoom” and “swipe to…github.com
16. Store 4
Everyone knows Store. At least, they should. Currently we’re in the fourth iteration of this great library for async data loading and caching. According to the README file:
Storeis a class that simplifies fetching, sharing, storage, and retrieval of data in your application. A
Storeis similar to the Repository pattern while exposing an API built with Coroutines that adheres to a unidirectional data flow.
Store provides a level of abstraction between UI elements and data operations.”
You can learm more about Store in the last Android Developers Backstage podcast: “Episode 132: Storing data with Store.”dropbox/StoreStore is a Kotlin library for loading data from remote and local sources. Modern software needs data representations to…github.com
This is another library for showing a placeholder of a
View when content is loading.
Take a look at how nicely animated it is. You can use it with a
RecyclerView too. The documentation is short, but is shows its basic usage. There’s also a sample app. It’s in version 1.0.0 and released under the Apache 2.0 license.samlss/Broccoli?An Android library that shows the placeholder of the view. – samlss/Broccoligithub.com
This library provides a
Button with a built-in progress bar inside. The idea is not new, but this is a fresh approach to it.
- No layout changes required
- Few lines of code to add
- Easy configurable,
- Built-in fade animations
The process, including how the lib was implemented, is available here.
Currently, the version is 2.0.0, and it’s released under the Apache 2.0 license.razir/ProgressButtonAndroid Progress Button. Contribute to razir/ProgressButton development by creating an account on GitHub.github.com
This is an Android project allowing you to add a gradient view in the simplest possible way.
The library supports API 14 and above and is released under the Apache 2.0 license. The README file is short, but it contains some good tips, like how to use it in Java and Kotlin. There’s also a helpful sample application.lopspower/GradientViewThis is an Android project allowing to realize a gradient View in the simplest way possible. Finish the gradient shapes…github.com
According to their GitHub page:
“Contour aims to be the thinnest possible wrapper around Android’s layout APIs. It allows you to build compound views in pure Kotlin without using opaque layout rules — but instead by hooking into the layout phase yourself. The best comparison for Contour would be to ConstraintLayout — but instead of defining constraints in XML you actually provide them as executable lambdas.”
This is a really interesting idea, especially since this library tries to deprecate the old XML-Android approach. The documentation is really good, but please remember that:
“This project is currently experimental and the API subject to breaking changes without notice.”
21. Orbit MVI
According to the README file:
“Orbit provides the minimum structure possible around your redux implementation to make it easy to use, yet leave you open to use RxJava’s power.”
The framework is really well documented, with a thorough explanation of how it works and how to use it. Currently, it’s in version 3.3.0, and it’s released under the Apache 2.0 license. If you plan to start a new project and think about the MVI pattern, this is worth a try.babylonhealth/orbit-mviOrbit is an MVI framework for Kotlin and Android which we use at Babylon Health. Join us at the Kotlinlang slack! If…github.com
This isn’t a new library, but it was refreshed in 2019. It helps you create a circular
ProgressBar in the simplest possible way.
The documentation is comprehensive and explains how to use the library. It also contains snippets of code and a sample app. The project was developed in Kotlin under the Apache 2.0 license. Currently, it’s in version 3.0.3.lopspower/CircularProgressBarThis is an Android project allowing to realize a circular ProgressBar in the simplest way possible. To make a circular…github.com
23. Waterfall Toolbar
This is a view that tries to mimic the Top App Bar from Material Components for the Web. Basically, it dynamises an ordinary toolbar, increasing and decreasing its shadow when an associated view is scrolled.
Actually, this view extends the
CardView and adds an elevation to it. The project was released under the MIT license and is open for a contribution. It has proper documentation and a sample app.hugocbpassos/waterfall-toolbarMade in Kotlin, Waterfall Toolbar is an Android version of Material Design’s web component waterfall toolbar…github.com
“A WYSIWYG writer for crafting notes inspired by Bear. It uses markdown for styling and formatting text with a beautiful inline preview.”
Press was created as a proof of concept for exploring multiplatform projects in Kotlin, so this is great place to grasp how to write apps for Android, iOS, and macOS all at once. However, currently there’s only an Android version available.
The project has a really good documentation that includes an explanation of UI architecture, custom views, DI ,and testing/debugging shared code. It was released under the Apache 2.0 license.saket/pressPress is a wysiwyg writer for crafting notes inspired by Bear. It uses markdown for styling and formatting text with a…github.com
“AndroidColorX (i.e: Android Color Extensions) is an Android library written in Kotlin that provides color utilities as Kotlin extension functions. The library relies on AndroidX
ColorUtilsfor some of its calculations.” — via the AndroidColorX GitHub page
This library provides extensions for:
- Converting between many color types (e.g.,
CMYKColor, and more)
- Calculating shade and tint palettes,
- Calculating complementary, triadic, tetradic, and analogous colors
- Darkening or lightening a color by an amount
- And more
The best way to get to know this library is to check out its really comprehensive documentation. Currently, it’s in version 0.2.0, and it was released under the Apache 2.0 license.JorgeCastilloPrz/AndroidColorXAndroidColorX (i.e: Android Color Extensions) is an Android library written in Kotlin that provides color utilities as…github.com
This library adds logic to a
NestedScrollView, allowing it to react dynamically with an indicator when the scroll is changed.
The README file contains all the information needed to start playing with the project — like how to use the
IndicatorItem. Currently, it’s in version 1.0.2, and it was released under the Apache 2.0 license. It supports API 16 and above.skydoves/IndicatorScrollView? Reacts dynamically with an indicator when the scroll is changed. Add below codes to your root build.gradle file (not…github.com
This is a theme engine for Android.
It allows you to change themes dynamically. It also defines some core themes:
Theme.Cyanea.Light.NoActionBar. The README file is really good. It’s full of examples, and the project itself is released under the Apache 2.0 license.jaredrummler/CyaneaA theme engine for Android. Themes are immutable, possibilities are beautiful. A powerful, dynamic, and fun theme…github.com
28. Material Dialogs for Android
This is a library that implements animated, beautiful, and stylish material dialogs.
The library supports two types of dialogs:
- Material dialog
- Bottom-sheet material dialog
Underneath, it implements Airbnb’s Lottie library to render After Effects animations into an applciation (mentioned in one of my previous articles).
The project is really well documented, and it was released under the Apache 2.0 license.PatilShreyas/MaterialDialog-Android?Android Library to implement animated, ? beautiful, ? stylish Material Dialog in android apps easily. 1. Material…github.com
- A smart way to write a fata flow in pure Kotlin
- Android extensions to let you just focus on states and events
- Ready for Kotlin coroutines
- Easy to test
- Open to functional programming with Arrow
Currently, it’s in version 0.9.5, and it was released under the Apache 2.0 license.uniflow-kt/uniflow-ktCurrent version is 0.9.5 Choose one of the following dependency: this version is based on Kotlin 1.3.50 & Coroutines…github.com
30. Android MotionLayout Carousel
This is a sample project you can use to see how to build a simple carousel with MotionLayout.
The project doesn’t have any documentation. But still, you can check the code, which is pretty straightforward, and make use of it for learning purposes. It was released under the MIT license.faob-dev/MotionLayoutCarouselSimple Carousel built with Android MotionLayout. Contribute to faob-dev/MotionLayoutCarousel development by creating an…github.com
That’s it. I hope you enjoyed the list and that some of the libs or projects inspired you. Till next time!
Get real time update about this post categories directly on your device, subscribe now.