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?

closed as too broad by JonW Mar 23 '15 at 10:07

Please edit the question to limit it to a specific problem with enough detail to identify an adequate answer. Avoid asking multiple distinct questions at once. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.

up vote 31 down vote accepted

At a high level I think these are most important, and they go for any human interface, not just Android UIs:

  1. 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.
  2. 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.
  3. 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.
  4. 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.

  • 2
    'Hire a good designer' you mean :-) – Blundell May 9 '12 at 6:52

The Action Bar is a big must, avoid using the menu for application navigation, spending time on UI design.

I'd suggest using styles as much as possible which should use limit the amount of layout inconsistency if you create a logical structure of sharing style attributes.

One thing I would say, is the guidelines are only guidelines, if you are comfortable with them, then don't be afraid to go further and do something a little different or make custom views.

At the end of the day, if users are the final decider ;-)

As of 2015, there's a de facto document on best design practices for Android:

Material Design

There's a bit of UX fail in the documentation which they start by introducing cool new stuff like materials and cards, but doesn't start with the basics like layouts and grids. So you might have to flip from the back.

Much of it involves feedback.

  • Animations should be dependent on what you click and how you click it, not scattered Powerpoint-style animations for the sake of having animations.
  • Acknowledge the user's concerns. When they try to do something, tell them whether it fails or succeeds.
  • If there's a problem, don't just give them an error. Tell them what they can do about it.

A lot of UX is about familiarity.

  • If a screen has one very common action (e.g. compose mail), have a floating action button for it.
  • Use similar icons. The share button was difficult to understand a few years back, but now everyone knows what it is.
  • Similar with the Up/Back buttons or swiping across different tabs.
  • Make sure things like fonts and padding are consistent.

Highlight important things.

  • If you look at Gmail, they use typography to tell you which information is important - title, email snippet, and time use different fonts and arrangements to highlight.
  • The most important info should be on the left side and the least important should be on the right.

Aesthetics. Material design actually helps a lot of non-designers like myself with UI. You can mix and match most things now.

  • The color segment gives some nice tones and shades which can be immediately applied.

  • Typography covers the different font weights, opacity, spacing, and common types. As a programmer you can just plug in things like style="@style/Base.TextAppearance.AppCompat.Title" to pick a particular font now.

  • Icons are easily available for most things and are designed consistently.

I've gathered some of Android's UI patterns into my blog: http://www.androiduipatterns.com/p/android-ui-pattern-collection.html

Another site worth checking out is this: http://www.androidpatterns.com/

  • 3
    Please consider placing a full answer here, not just links to elsewhere. – Lode May 9 '11 at 6:45
  • i think he dont want to write many things otherwise he is class guy . – Tushar Pandey Sep 17 '14 at 11:06

I just stumbled over a Android Design Site where design principles of Android 4.0 are shown, quite similar to Apple and Microsofts Guidelines. So for archive purposes this post.

Not the answer you're looking for? Browse other questions tagged or ask your own question.