Android feels different this month. The Droid landed on Verizon, Eclair shipped, and the Market is getting crowded with apps that finally look and feel like they belong on a pocket computer. If you are building today, you are probably trying to answer a simple question that turns out to be tricky: what UI pattern fits the job. After a bunch of client work and too many late nights with ListView scroll performance, I keep coming back to three workhorses that cover most screens we ship: lists, cards, and gestures. Pick the right one and your app feels natural. Force the wrong one and users bounce.
Definitions
List: The default screen for data on Android. A vertical stack of rows powered by an Adapter feeding a ListView. Rows can show an icon or thumbnail on the left, a title, maybe a subtitle, and some meta like time or count. The platform gives you focus and pressed states, fast scroll, and predictable touch feedback. Lists pair well with the hardware Back and Menu keys, long press actions, and the mental model of open a row to see more.
Card: A self contained block that holds a chunk of content with some padding and a shadow or border like feel. Think of it as a portable panel for a summary. Cards sit in a feed or a grid and can hold mixed content types that do not quite fit in a flat row. On Android today you build them with a container view, a 9 patch background for subtle edges, and sane inner spacing. A card is not a dashboard button with a giant icon. It is a compact mini detail with a clear primary tap target.
Gesture: A direct physical shortcut. Tap is the baseline. Long press is Androids secret handshake that reveals context. Fling left or right to move between views shows up in Gallery and feels natural. There is also the new gestures overlay where you can draw a shape to trigger an action. Multi touch is not a sure thing across devices yet, so do not design flows that depend on pinch to zoom. Gestures should speed up an obvious action, not hide a critical one.
Examples
Gmail is a master class in lists. The inbox is a clean list of conversations with stars, bold unread, and timestamps. Tap anywhere on a row to open. Long press reveals bulk actions without cluttering the screen with buttons. The design respects your thumb and your time.
Messaging threads are also lists. Each row shows a contact photo, a snippet, and the count. Inside a conversation, the bubble clusters act like tiny cards that group messages in a way your brain parses fast. It is not a pure list in that inner view, but the outer list is doing all the heavy lifting.
Contacts uses a tall list with an alphabet scroller. That little thumb target on the right is gold when you have hundreds of entries. Photo, name, and status line is enough. The detail screen then switches to a card like layout for actions where each block feels self contained and easy to hit.
Android Market leans on lists for categories and app results. Icon, title, rating stars, and price. The pattern rewards quick scanning. The app detail view reads like a stack of cards. Description, screenshots, and reviews feel like separate blocks you can skim without getting lost.
Twitter clients like Seesmic and Twidroid keep the timeline as a list with avatars and timestamps. Long press on a tweet for reply and retweet. Some experiment with swipe between timelines like Home and Replies. It works because the tabs at the top advertise that gesture. Users do not have to guess.
Gallery is where a gesture shines. Swipe to move to the next photo. No hint needed and once you try it you never go back to tiny arrows. It is a perfect marriage of touch and content.
Counterexamples
Hidden swipe to delete in a list. If the list shows no icon or affordance, and if there is no undo, users will either never discover it or will rage when an accidental touch kills data. Today, long press with a confirm beats a silent lateral fling that nobody expects on every device.
Card grid with tiny tap targets on small screens. HVGA is still common. A three column grid of fancy cards looks cool in a mock but becomes a precision game in your hand. Missed taps and jitter ruin the session. Two columns max for anything that must be tapped with a thumb.
Overloaded list rows. Shoving avatar, title, subtitle, snippet, time, badge, menu icon, and two buttons into one row kills scroll speed and scan speed. The old G1 will show you that cost right away. Keep rows light. Let detail screens do the heavy work.
Critical actions only on long press. Long press is great for power moves. It is not discoverable for new users. If delete or buy or share is the key moment, give it a visible entry point through Menu or a clear button. Leave long press as a fast lane.
Gesture only navigation with no backup. If your app depends on a custom scribble gesture, you need a visible alternative. The gestures overlay is fun, but people forget shapes, and some devices have touch quirks. Back and Menu should still carry the flow.
Decision rubric
Use a list when your content is a set of similar items and each item leads to a detail view. You want fast scroll, hardware Back makes sense, and long press can expose batch actions. You care about performance and predictability above all.
- The primary job is pick one item from many.
- Items share the same structure and actions.
- People will scan more than they will admire.
- You need to support both touch and trackball smoothly.
Use cards when the feed mixes different content types or you want richer summaries that feel self contained. Cards are great for dashboards, mixed media, and activity streams where a row would be cramped or confusing.
- The primary job is skim a set of stories or updates.
- Items may have different actions or layouts.
- You can give each card clear breathing room and a single main tap target.
- Two columns max on small screens. One column if text heavy.
Use gestures when they cut time on a task people repeat. Make the gesture obvious or pair it with a visible control. Keep a non gesture path through Menu or a button. Respect the Back key at all times.
- The action is an acceleration, not the only way.
- There is visual context that hints the gesture. Tabs suggest a swipe. A map suggests drag.
- There is clear feedback and a way to undo destructive moves.
- The flow does not depend on multi touch support.
Extra sanity checks: Hit testing with thumbs not styluses. Smooth scroll on older devices. Text sizes that survive sunlight. States for focus and pressed so trackball users are not left out. Menu items named with verbs people actually use.
Lesson learned
Android rewards teams that choose clarity over clever. Lists are not boring. They are how we get things done. Cards bring character when the content asks for it. Gestures feel like magic when they save effort and feel like a trap when they hide the only door. If you are not sure which way to go, ship a list first, add a card layout on the detail screen, and layer in a gesture that mirrors an existing button. That combo is hard to beat.
On the build side, think of scroll performance as table stakes. Keep row layouts flat. Recycle views. Use 9 patch assets for soft edges instead of heavy images. Limit overdraw. Use simple state selectors so pressed and focused feel alive whether you tap or nudge with a trackball. Your users will never send you a thank you note for this, but they will stay in your app longer.
Design for one thumb and the Back key. Not everyone will get a big screen right away, and not every phone supports fancy finger combos. A clean list, a few well built cards, and a small set of honest gestures will travel well across devices.
The platform is moving, and new toys keep arriving, but these three patterns already earn their place. When an app feels quick and obvious, it is usually because the team respected the list, let cards carry rich summaries, and used gestures to remove steps. Do that, and your app will feel at home on Android today, and your users will feel at home in your app.