One Finger Gestures

Posted by: Richard Monson-Haefel on 02/03/2009
Frequently the best multi-touch gestures are done with a single finger. The advantage of using a single finger to manipulate a multi-touch surface are compelling. For one thing, a single finger gesture is frequently easier to execute than multiple finger gestures. And, in my opinion, single finger gestures can be much more intuitive then multi-finger gestures.

As an example lets compare the ubiquitous "pinch" gesture popularized by the iPhone, which shrinks or stretches visuals, to the Linja Zax gesture developed by Linja Design Oy of Helsinki Finland. The pinch gesture obviously requires two fingers of one hand with the iPhone or fingers from two hands with something like the surface. While the pinch works really well, it requires frequent and repeated pinching or stretching to progressively zoom out of or into a image. Do this gesture on a global map on a big touch screen enough times and you'll soon get tired of it. The Linja Zax gesture, on the other hand requires only a single finger which traces a spiral. With each spiral (a circle gesture really) the image zooms in or out depending on whether you move your finger clockwise or counter clockwise. It's very simple to remember and to execute and is an excellent alternative to pinching and stretching.

Another example is the Swype keyboard developed by Swype of Seattle, Washington. Swype allows you to enter text by dragging your finger and pausing on keys rather than thumbing, henpecking or touch typing. It's really handy with small devices. Swype allows you to type fairly fast or even really fast when combined with predictive logic. It's a nice alternative to pecking away at a keyboard on a small device.

There are plenty of other examples of nice single finger gestures including the archetype button press, but also other less known examples like the “tack” in which you start with the tip of the finger and roll on to the pad of your finger to indicate tacking something down (sorry I can't find the video that shows that one).

The point is: when talking about multi-touch we should not insist that multiple fingers be used at all times. What is more important is that multiple fingers can be used to allow social computing or more sophisticated gestures. In general, however, I think multi-finger gestures should be used sparingly. Why use two or three fingers (or sometimes a whole hand) to do what can be done with one finger?

Of course its easy to see people going overboard with this – like videos I’ve seen where user have to memorize a number glyphs in order to request menus or help or whatnot. Single-finger gestures are extremely important tool in multi-touch design but like all gestures they should be intuitive and discoverable.


About Richard Monson-Haefel

Richard Monson-Haefel

Richard Monson-Haefel is the author of 97 Things Every Software Architect Should know (O'Reilly), Enterprise JavaBeans (O'Reilly), Java Message Service (O'Reilly), J2EE Web Services (Addison-Wesley), and one of the world's leading experts and book authors on enterprise computing. He was the lead architect of OpenEJB, an open source EJB container used in Apache Geronimo, a member of the JCP Executive Committee, member of JCP EJB expert groups, and an industry analyst for Burton Group researching enterprise computing, open source, and Rich Internet Application (RIA) development. Today, Richard is an independent software developer. You can learn more about Richard at his web site http://www.monson-haefel.com

More About Richard »

Why Attend the NFJS Tour?

  • » Cutting-Edge Technologies
  • » Agile Practices
  • » Peer Exchange

Current Topics:

  • Languages on the JVM: Scala, Groovy, Clojure
  • Enterprise Java
  • Core Java, Java 7
  • Agility
  • Testing: Geb, Spock, Easyb
  • REST
  • NoSQL: MongoDB, Cassandra
  • Hadoop
  • Spring 3
  • Automation Tools: Git, Hudson, Sonar
  • HTML5, Ajax, jQuery, Usability
  • Mobile Applications - iPhone and Android
  • More...
Learn More »

NFJS, the Magazine

May Issue Now Available
  • Client-Side MVC with Spine.js, Part 1

    by Craig Walls
  • On Prototypal Inheritance, Part 2

    by Raju Gandhi
  • Making use of Scala Lazy Collections

    by Venkat Subramaniam
  • Integration Testing Web Applications Using Gradle

    by Kenneth Kousen
Learn More »