When Android first came out, there was no way of quickly skipping down a really long list. For instance, if you had a really large amount of songs on your phone, you would have to tediously fling your finger over and over to scroll to the ‘T’s to listen to The Toasters. Later versions of Android resolved this issue by providing a UI control that allows you to jump.
How List Jumping Currently Works

In order jump further down the list, you must first start by scrolling. This is done by placing the finger on the list, and moving it up the screen. Logically this feels backwards, moving your finger up to scroll down, but it makes for a pleasurable experience because you appear to be moving a physical object. When you start scrolling, a little tab pops up somewhere on the right side of the list based on how far down you’ve scrolled. To skip to list items that start say, with the letter ‘G,’ stop scrolling and place your finger on the jump tab and start dragging down. As you do, a letter will appear in the center of the screen, defining what letter items in the list currently begin with. When you have reached your letter, you let go, and can go back to scrolling normally.
Why The Current System Is Flawed
Having used the current list jump method for some time now, I have noticed several flaws with the solution’s interaction.
- There is no way of initiating a jump without first needlessly scrolling.
- There is a half second pause in your brain every time you use it, because it changes the interaction from “moving finder up,” to “moving finger down” in order to scroll.
- It is wildly inaccurate. There is no standard iteration of distance to find the next letter. Instead, it bases the distance you need to scroll on the number of items in that list that start with a specific letter. So, if you have a long list of ‘G’s, a short list of ‘H’s, and a long list of ‘I’s, it will be incredibly difficult to land on the ‘H.’
- It is time sensitive. The UI control for list jumping is not always on the screen. It comes and goes based on the amount you have scrolled, and how long you have stopped. The control may vanish before you can find it with your finger.
One Way To Fix The Experience

In order to list jump with this interaction, a user would first pinch the list. This is the same interaction used for zooming out on images and maps. Next, a new view will appear, overlaid on the list, showing all the different letters of the alphabet. The user then selects a letter they wish to jump to, the view will vanish, and the list will jump to the first item that starts with the selected letter. At this point, normal scrolling can resume.
Why This Fix May Be Better
Only usability testing will define which implementation is better, but their are indicators of how this may be an improved experience.
- It makes use of a widely used gesture (zoom) which maps well with the interaction.
- It does not attempt to change the already established interaction of scrolling.
- It is potentially more accurate and affords kinesthesia. The consistent position and spacing of each letter allows a user to master the interaction.
- It is more obvious that the list does not contain items that start with certain letters.
- It can be initiated without having to borrow from another interaction.
- Fitt’s Law: The hit area for this gesture enormous in comparison to the current method, which will potentially make it a more reliable interaction.
Demonstration
How You Can Help Make This A Reality
If you would like to see this interaction come to your Android powered phone, let Google know! Find my feature request ticket, and ask Google to add this feature.
Try It Out Yourself
As requested by commenter Zach, I’m providing a download link to the AIR mock-up APK (requires the Adobe AIR Pre-release). Pinch the list to get the alphabet list, ‘J’ is the only letter you can tap, tap the list again to reset the list to ‘A.’


Brenton, I think it would be very likely for Cyanogen to accept this into CM6. You should fork him on GitHub and send a pull request to him to see if he will accept it.
Very cool stuff.
Impractical for one-handed operation, but good try.
Want to share the APK from the demo? I wouldn’t mind seeing how it feels on a device…
The problem with your idea is that user has now two methods to scroll a list and the second method is not discoverable. What you list as current flaw #1 is actually a feature to make the user discover list jumping.
Another way to improve list jumping is to insert an [Index] button as the first element of the list. Once clicked it should display the index screen you propose. But if the user starts scrolling it will go away as it’s part of the list. It also makes sense to make its color differ from the other list items so that the user would notice it.
@Zach,
I’ll upload the APK so you can try it out later today. You’ll need the AIR for Android prerelease though.
This is a pretty good idea. I do find the current implementation really annoying. It seems fine in theory but whenever I use it it takes me a while to actually get to the letter I want because of the unpredictable speed of the scrolling. Your idea would work much better.
Similar approaches may be to have a way to reveal the letter jumps to the right or left and some sort of indicator that it can be slid over. If the user were to slide from the edge of the screen horizontally the entire list view could slide and expose the alphabet list which could be scrolled up/down and once an item is picked the original list would slide back positioned to that letter.
They’re both similar approaches but the slide-to-reveal would still work with one hand.
Blah, I forgot the APK, it’ll have to wait to be uploaded until Monday…sorry.
I like yours better. Going to release the source for the A-#?
@Zach: I added the demo APK so you can play around with it. Keep in mind you’ll need the Adobe AIR for Android pre-release to run it.
@Ryan: Sorry, but the video is just “faking” the interaction to demonstrate how it would work. Nothing has actually been implemented.
Interesting concept. What about lists that are not sorted alphabetically (date, size, etc.)? How does this concept work for non-alphabetic languages such as Chinese? The thumb concept, while not ideal, avoids the “show me the index” issues this concept would need to address.
@Ryan, You make a valid point and raise another issue with this solution. However, there are over 3000 languages and six language types around the world. Trying to create a single solution to address all of them only strives for mediocrity. If we look at the current audience of Android devices, they are mainly being sold in the Americas and Europe. These countries use Alphabetic writing systems which this solution may improve.
China’s Logographic writing system is as far apart of Alphabetic as you can get. Whatever is going to improve their ability to navigate their language is going to require a radically different solution. I’m just going out on a limb here, but it’s my opinion even the current list jump scroll tab solution isn’t helping a china man scroll their 6000-60000 character language a single iota.