Developing Android Applications with Adobe AIR [41]
The GestureWorks Library
Ideum, a design company specializing in museum work, developed and sells a library for detecting multitouch and gestures for Flash Professional CS5 and Flash Builder 4.0. Called GestureWorks (see http://gestureworks.com), the library supports all the gestures we have discussed thus far.
GestureWorks provides unique gestures such as flip/flick which calculates acceleration, 3D tilt, and a multitouch gesture scroll. It also supports continuous transitional and concurrent gesturing, which means you can use multiple gestures, such as move, rotate, and scale, simultaneously.
GestureWorks also includes a simulator for testing touch-based interactions within your application if you do not have ready access to touch-based screens. This should facilitate a quicker and smoother development process.
Lastly, GestureWorks comes with many examples, including a Google Maps example which demonstrates the expected gestures when manipulating a map. This will give you a head start if you are interested in applications using geocoding.
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.
Conclusion
Although the mouse has evolved to touch technology, the keyboard has hardly changed since the creation of the typewriter. Many small devices and tablets offer digital keyboards, but none of them are an ideal solution on their own. They rely on spellchecking and a customized dictionary to compensate for fingers that type the wrong key and ease the cumbersome user experience.
Perhaps a better approach is to move away from the traditional keyboard and to think of using gestures. Palm OS proposed Graffiti in 1996 as a shorthand handwriting recognition system (http://en.wikipedia.org/wiki/Graffiti_(Palm_OS)). Samsung offers the Swype key that allows you to enter a word in a continuous gesture by tracing a path between letters (http://www.swypeinc.com/product.html). 8pen proposes a hierarchical keyboard (http://www.the8pen.com/index.html).
Let’s see what the future will bring.
Chapter 8. Accelerometer
You may hate gravity, but gravity does not