To those of you who've built many apps, what are the things that are critical for a good UI? I'm thinking things like:
- Action Bar
- Well-designed icons
- Use threads to keep the app responsive
- A selector to highlight when focused/pressed, etc.
- Pay attention to layout & consistent alignment etc...
But what else?
Answer
At a high level I think these are most important, and they go for any human interface, not just Android UIs:
Clarity — ensuring your UI is immediately clear to most if not all your users; minimizing user confusion.
- Visually group logically-linked interface elements.
- Use proper affordances—buttons should look like buttons.
- Use subtle animations to aid the user's mental model for interface transformations (e.g. navigation).
- Show a one-time tutorial if necessary; it's worse than having a perfectly understandable interface, but better than throwing users into a potentially confusing interface with nowhere to turn for help.
Consistency — leveraging existing patterns from the system where applicable, as well as using consistent patterns within the app.
- Use common Android UI patterns like the action bar, bottom button bar, contextual action rails, gesture-based paging, etc.
- Align with common system behaviors like the BACK and SEARCH buttons, app widgets, and notifications.
- Maximize internal consistency using themes and styles.
Usability — maximizing ease of use.
- Provide visual or otherwise haptic feedback for UI elements.
- Add directional navigation support and text hints (
contentDescription
) to improve accessibility.
And of course, Aesthetic — making sure it looks damn good; strong emotional ties to products often come from beautiful interfaces.
- Support all screens by providing assets at each target density, using nine-patches, and providing tailored layouts for different physical screen sizes.
- Visually customize either all interface elements or none at all for given screens—if you customize only a portion, you'll end up making poor assumptions (devices have varied OS themes).
- Hire a designer.
Responsiveness and resource stinginess are crucially important as well, but those are more influenced by implementation than design.
See my slide deck on this topic for some more tips.
No comments:
Post a Comment