Android App Polishing: Leveraging Reselect TapsWith the release of Capitaine Train for Android, several people recently asked me how we implemented some of the tips & tricks available in the application (some of these tricks are barely visible but remember, I love details :p). In order to showcase some of the most interesting application bits of code, I thought it could be helpful to Android developers to start a small series of posts. Feel free to comment this article if you want me to describe something you found nice in the Capitaine Train application.
In a previous post of mine, I explained how much attention we put to the Capitaine Train Android app search form. Indeed, the search form is probably the most important screen in the application. This is where all train trips begin after all!
Prior publicly releasing the application, we spent quite some time doing some user-testing. While most people were satisfied with the current implementation of the Search form, some other users were frustrated by the "OK" button on the upper-left corner of the screen when selecting an outward and/or inward date/time. It finally appears these users were all Android active/power users!
The "OK" button was originally placed here because it felt logical to us to put it here:
• It is consistent with some other Android apps (GMail, Gallery, etc.)
• It matches the "ActionBar" contextual mode pattern
• It indicates you're in an edit mode rather than in the normal user-flow
• It doesn't take space on an already charged screen
The unique complain about the "OK" button being here was it was not "easily accessible". Indeed, the scanning process in all search form edit modes is to go from the top to the bottom of the screen. As a consequence, it was pretty annoying to power-users to go back to the top of the screen to validate the selected date/time (especially for users using their device with one hand).
Hence, we were faced with an serious issue: break everything just to satisfy power users or keep the form "as-it" ... We finally came out with a simple but yet-extremely useful idea: leverage the "reselect to validate" gesture. Because normal/regular doesn't care about "quick" edit mode validation we simply decided to validate the selected date/time once the date or time is reselected.
Android doesn't really put the "reselect to do smth" pattern in front of the scene. This is mainly because it is up to the application to decide which UI element can be "reselected". There are still references to this pattern in the framework's ActionBar TabListener. The onTabReselected(ActionBar.Tab, FragmentTransaction), for instance, can be used to scroll a scrollable container to the top.
This pattern is obviously not visible and that's actually how power-user gestures should be: available but visually hidden and used sparingly. Just be adding this power-user gesture we kept a visually simple UI for most users while still satisfying power-users. When developing an Android application always concentrates on creating a UI dedicated to general users. Start thinking for power-users only if they really complain about your UI!