The choppiness of Android’s user interface has been debated for as long as Android has existed, and many critics often claim that Android phones should “use the hardware” to draw the user interface, but in fact Android has always been using hardware acceleration. However, hardware acceleration is not the answer to all choppiness issues. Diane Hackborn, an Engineering manager in the Android team has published a very interesting Google+ post that shed some light on what it takes to have a butter-smooth scrolling on a mobile device.
Here’s what I take away from it: first, although Android 1.0 already had graphics hardware acceleration, but it wasn’t until Android 3.0 that “full” hardware acceleration was added. Secondly, hardware acceleration is not a panacea, and using OpenGL do draw icons isn’t either. While OpenGL can be used to display UI, it also consume more memory, which could lead to other issues. Finally, a mix of hardware and software rendering can get the job done.
There are also a number of things that can lead to choppiness: for example, accessing Flash storage (which is slow compared to the RAM) at the wrong time may lead to a missed frame here and there, which lead to choppiness. A careful orchestration of retrieving the touch events, preparing the frame and displaying it is also required to achieve smoothness. Finally, with higher display resolution, memory bandwidth (how fast you can move data) can become a problem.
Overall, I find her post to be very interesting, as it puts in perspective the challenge of building a smooth user-interface. Her post was not meant as being an “excuse” for choppy Android user interaction, but was aimed at clearing up some myths about this topic. “Make it hardware accelerated” is just too simplistic.
That said, while that suggestion may be misguided because users don’t understand the ramifications of a smooth user interface, the request is still valid for many Android devices. Windows Phone, for example, has achieved a near perfect smoothness with its user interface, on virtually every handset. But if you understand the implications of building a smooth UI, you may realize that the most important thing to achieving smoothness, is to design the user interface to be drawn in an efficient way…
To be fair, Android phones have come a long way since the T-Mobile G1 and I rarely complain about scrolling on modern smartphones, even if that still happens occasionally. The tablets can be a different story, but they are getting a lot better too. My sense is that with a mix of more memory, faster CPUs and the next-generation hardware, these scrolling issues will tend to go away completely within the next 24 months. Now, there are more responsiveness issues that need to be addressed, the most important of which -for me- is the keyboard responsiveness.