Touch applications have been around for decades. You see many of these early single touch applications in supermarkets, bank ATMs, restaurants and airport check-in kiosks. With the advent of the iPhone and Windows 7, multitouch applications are entering the mainstream of hand-held and desktop computing. There are also higher end multitouch and multiuser systems like the Microsoft Surface and Perceptive Pixel's Multi-Touch Wall and Workstation. Let's take a quick look at what developers should consider when adding touch to existing applications and they are building new applications.
Why touch? First, it's cool (you can see touch examples in recent movies including Quantum of Solace and Minority Report). Also, the hardware is here and more is being built both in handheld and desktop form factors. Touch is also perceived to be part of the next evolution of desktop computing. The iPhone is an example of one of the new form factors that are being created. For certain applications, touch provides a more intuitive UI.
What are some of the things to think about when you are designing applications for touch? First (and always) know the problem you trying to solve if you are considering a touch based application. Consider how the application could also support multi-user multi-touch. To consider the UI, think about how people interact with objects in the real world. Rest assured, touch is not going to replace the keyboard and mouse anytime soon (although you can add virtual keyboards).
What types of applications might be good for touch-based UIs? Touch is good for applications where the user is consuming content, navigating, reading and viewing. Touch is also good for quick input tasks: clicking a button, selecting from a simple keypad, manipulating an object (ie: rotating a photo) and selecting items from a list.
There are three areas of touch: basic touch, multitouch and gestures. In basic touch, the user's finger replaces the mouse button. Basic touch applications should use big buttons and wizard-style applications. Examples include Kiosk, Post Office, ATM and Self Checkout. Multitouch applications involve extremely interactions with application elements. iPhone and Microsoft Windows 7 applications have multitouch support built-in. Gestures perform a finger movement causing an event to fire when the gesture is recognized. Gesture movements can be intuitive, allow for customizability and are supported on nearly all touch systems. Examples include dragging a slider to the right or left, panning a set of pictures and zooming in on a CAD drawing.
Building touch applications requires different design UI considerations than mouse and tablet/stylus applications. For touch applications you need to use big targets for visual controls -- people's fingers are not small or thin like a mouse or stylus. You should provide adequate whitespace between controls so that you don't get false hits. Finally, program your touch applications so that they are aware of the hardware that they will run on, including screen resolution, form factor and touch sensitivity.
What hardware is needed for touch application development? If you don't have a touch computer or device, you can actually use mouse and tablet systems to do your initial design and development. If you are building iPhone applications, the iPhone SDK comes with an iPhone simulator. For final testing you will definitely need an iPhone 3G or 3GS. For Windows Touch development you can use any computer with a touch screen like the Asus EeeTop PC, HP Touch Smart PC and most Tablet laptops. For multitouch development on Windows 7 you can use the HP Touchsmart tx2 notebook and Dell Latitude XT2 laptop. More touch based devices and desktop computers are appearing every day.
My advice to all developers is to start considering and developing touch applications now. Handheld devices are appearing every day to compete with the iPhone. New touch desktop computers are appearing, especially now that Windows 7 is available. What developer tools are available? You can use the aforementioned iPhone SDK, or if you are using C#, Delphi Prism or other .NET languages, you can also use Mono Touch from Novell. For Windows application development you can use the Windows 7 SDK (includes support for the new WM_TOUCH and WM_GESTURE Windows messages) with your Windows programming languages. From the company I work for, Embarcadero Technologies, the recently released RAD Studio 2010 has integrated component support for touch, multitouch and gestures. [Note: a big thank you to Chris Bensen, Seppy Bloom, and Thom Gerdes of the Embarcadero R&D team for their help in the writing of this blog post.]
If you are building and deploying touch applications, post a comment on this blog. I'd love to hear your success stories.
Programming is Life!
Recent news for developers:
David Intersimone (David I) is the Vice President of Developer Relations and Chief Evangelist for Embarcadero Technologies. My company blog is at http://blogs.embarcadero.com/davidi