Designing for Touch


Designing for touch can be tricky. Here are some tips on creating the best user experience.

First, multitouch and gesture interaction requires testing of various devices. You should never use the emulator for final testing, however. Even though AIR enables you to develop for multiple platforms, it is dependent on the device and the operating system, and the result is not always a uniform experience. GestureWorks, discussed in the preceding section, may address some of this issue; the library’s detection of gestures is superior to the AIR library.

In addition, you should review your code carefully. Make it lean to achieve optimal performance, as gesture responsiveness should not lag. Keep your display list small and use event.stopPropagation to prevent bubbling.

Careful design is also essential. Your hit area should be larger than what you design for the desktop. Make your buttons and hot areas large and obvious. The various software companies make different recommendations on the size of clickable assets. While pixel sizes are important, when using touch as an interaction model the actual physical size and resolution of the LCD in relation to your finger will dictate the design and can change from device to device. You should also create a safe area between interactive elements so that you limit incidental touches on different UI elements.

Also, you should know your repertoire of gestures well and use it appropriately, especially for small devices. Use only the simplest gestures and do not assume your choice of gesture is obvious. Test with actual users before deploying your application. If you plan to distribute your application globally, pay special attention to your choice of gestures, as cultural differences sometimes dictate what is expected.

Finally, the reinforcement of UI and visual hints should always be considered. If you provide instructions, use a step-by-step instruction application in which the user executes the expected gesture. Stay away from a written list of instructions.