Edit: The code from this post became a library and got significant enhancements. It’s open source, so just look it up on github for the source code and instructions on using it as a gradle dependency.
Picture a list view, with a Floating Action Button (FAB) sitting on it, like this:
The FAB needs to be able to move out of the way, so that all parts of all list items are actually reachable. Also, it is good form in this situation to have the app bar scroll out of the way, to maximise the viewport area dedicated to the list. There’s a well-knownready-madesolution for this; it looks like this
and has two disadvantages:
it does not visually sync up well with the leaving app bar - in contrast to the scrolling AppBarLayout, the animation is not linked to the actual scrolled distance, and to me, the hiding animation is distracting while I, as a user, am focused on scrolling the list
it does not sync up with the leaving app bar by implementation - this solution does its listening on nested scroll events and subsequent processing on its own. Together with the snapping behavior of the AppBarLayout, this can lead to states where the app bar is expanded, but the FAB hidden. This does not bode well for confused users having no idea where the FAB has gone.
Here’s how to get the FAB to move in sync with the app bar.
QuickFit now features a beautiful wide layout, for use on tablets in landscape mode. See:
A post or two on how to implement this fabulous FAB behavior is to follow.
This release also fixes a bug; scheduled activities do now really get cleared by clicking on the notification and will not reappear together with the next alert.
Taking screenshots for the play store is boring as hell: several locales, three form factors, setting up content data for the screenshots, possibly varying by locale… For the last release of QuickFit, I decided to automate.
QuickFit now allow scheduling workouts on a weekly repeating basis!
This update is all about taking even more thought and effort out of tracking workouts with Google Fit: Set up once when you plan doing your workouts, and then get reminded via a notification to actually do it, and to enter your session into Google Fit. The focus is still on delivering minimal UI that allows the user to get all needed information as fast as possible.
I’m learning Android development, and after hacking on Watchlater for a while, it was time for the first project completely of my own, that should also allow me to try my hand at some framework component that Watchlater simply had no use for. That project lies dormant on my HDD - while it taught me about the support library, material design and all about the service lifecycle, ultimately my goal of writing the IRC client I wanted was doomed from the start. The IRC protocol simply does not allow to identify users persistently, and so my goal of presenting query conversations on the same level as channels was unreachable. So QuickFit is the much better replacement project.
For me, using Google Fit is about logging my activity, looking at the calendar view and seeing a nice, high level and getting my daily pling. So walking and cycling gets tracked nicely automatically, but of course I want to enter my other workouts too. The Google Fit app can do this, but it is a bit of a long process: select the activity from the dropdown (easy, with the favorites), enter a time span, hit submit, get the “activity is in the future” message, go back, decide on some easy-to-enter start time that will work, hit submit again. That should be easier!
There was my perfect excuse for an app that allows me to:
solve my problem
try out using the Fit API using the Play Services library
use some fully featured material design, with pretty RecyclerView and CoordinatorLayout and a FAB