Bottom Navigation Bar is probably one of the most common navigation patterns around and the view at Material components is an incredible one. It has lot of customisation options, but badges has always to be a circle. If circles does not match your app’s brand identity or you just want to add crazy stuff (Lottie animation anyone?) in your bottom tabs, there is one pretty decent way to do it.

Five people in row holding different bowling balls. (pic from
Five people in row holding different bowling balls. (pic from
Tabs from a BottomNavigationBar proudly showing it’s different badges to the user. (pic from

Main goals

Pixel launcher added sometime ago this very nice effect to the app drawer which replaces our beloved android over scroll effect with the items moving and bouncing when the scrollable content finishes.
It has been a typical iOS detail in the past and probably a few years ago I would have been reluctant to implement it but I have to admit that I really think it provides better feeling to the user. Let’s see how to implement it in one simple class that you can add to any RecyclerView.

First things first, credits

This implementation has been adapted from the one published here by…

I usually work in a very big app which has been some years around. We have refactored some of the features several times and we have done a huge effort in modularisation in the last years, but app navigation is one of the big pending topics (and pain points) we, the devs, face every day. The time to tackle it has finally come to our sprint in form of a navigation redesign and we are gonna use this chance to improve our lives.

If you are of the one ones who want to go to the code first, this is…

Data and state having fun together (Neko Tai @ Unspash)

LiveData is a great way to send your data updates to the UI, but as commented in the Guide to app architecture in the final lines, dealing with loading state and handling errors are not trivial.

Consider de following scenario: when opening your activity, you want to display the list of items you have previously saved in local storage (if any) and display some kind of loading indicator while you go to the server for the fresh data. Once the data is ready, hide the loading and update the data in UI to be the latest. But let’s add something…

Holded in my beloved city Turin, Droidcon Italy just finished last Friday and, since I’m preparing some quick notes to present to my colleagues at work I though It would be great to share them here too. First of all, thanks to all the guys which organised it, the old fabric it took place at was amazing and using headphones to select the audio channel of the talk while the talks are sharing the same visual was a very nice touch, not to mention some very interesting talks.

Iconic bull fountain + iconic mobile OS logo

Recap what?

An event like this works like a music festival, it has several…

Photo by Jodie Morgan on Unsplash

Our UX team came up with a really great design for a product detail page starring a “buy button” which is placed in some position of the vertical scrollable content. Better check the image below.

There is a lot of blogs talking about android these days, so I though “hey, we got a lot of interesting cases at work, I’m pretty sure we can write something useful for the rest of the community” so here we are.

My plan is to start small, with simple implementations to simple problems (I love the smell of the easy wins in the morning) and see how it goes. This said, thanks for passing by, see you in the second post.

Juan Mengual

Android developer at adidas

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store