Anyone know of a user interface guidelines document for Android applications? Looking for something similar to Apple's or Gnome's.
The closest you'll get is here
You may also find these blog entries helpful
The Android Dev Guide now includes a section on UI Guidelines, but as of writing it only has guidelines on widget design, not on application design.
They already gave to you the essential links you can find on the web on the subject. I'd add some personal advices I wish I add before designing my first android app :
Buy a real phone ASAP. There are plenty of things you just can't know if you run your app only on the emulator.
Don't think about releasing your app without having using it for at least 2 week yourself on the phone. The advice of eating your own dog food is even more true here because we have not enough experience with such devices to rely on intuition. Desktop computer experience does not suit.
Design for big fingers. You don't have a stylus, and people have very different size of fingers. Design for the biggest so they won't get mad, while ordinary people will just feel more comfortable.
Design for both horizontal and vertical screen. On the HTC dream, the keyboard force you to change the layout very often.
Avoid creating 1000 activities. It seems a programming rule but it's not. When you open an activity, it's another app open on the top on others. As a result, closing the app one by one can eventually piss off the user, or at least confuse him. Espacially if there are complex restore states.
Design for interruption. It's a phone : it gets on and off, calls income, music is played, etc. Your app will be open and shut a 1000 times so cut loading, save the right states and ensure congruency.
It's a little screen, avoid putting to much information on it. Meaning only what the user will mostly use 90 % of the time. The rest of the data or actions must be contextual : long clic, menu, gestures, timers, etc. Yes, your user will not find all the feature immidiatly. He will probably even discover some of them monthes after using your app for the first time. But it worked for Apple :-)
Scrolling is boring : try to make your data fit on the screen. If you can't, try to use another windows or tab to display additional info. Scrolling is for data that is long to read and can"t be broken in several pieces.
Don't overload your menu. The contextual menu is used very often, it has to be used very quickly. If you have a lot of stuff, create one entry for a submenu named "more" like Google does.
There are some expected behaviors you should follow because the rest of the phone works this way :
Hitting the back button do not cancel the current action but save and quit. It's not what you expect if you have been working on other platforms, but that's how contact, settings or SMS work. So that's how you should do it.
Therefor cancel must be provided with the usual way : an entry in the contextual menu.
A clic performs the action. No confirmation, no "save". You clic on a setting, the setting changes. You select a filter in a drop down list, it filters. That's the user expectation.
When you open an app, it returns to the last state it has been : last selected item, last opened windows, etc. Use the onResume / onCreate / onPause methods to ensure consistency.
Writting in a text box starts the text with an uppercase letter. This is not automatic with the textbox widget, you have explicitly ask for it with "capitalize" in the XML layout file. But thats what happen everywhere on the phone...
Tell the user when you are consuming his data plan. This is so obvious, but I have seen app so confusing about it that you don't dare runnning it.
EDIT :
BTW, there is a nasty bug in 1.0 that prevent you from using a textbox outside of a tab view. Don't know if it's fixed in cupcake.
I recently stumbled upon this PDF at binary sheep. It is an attempt to create an assortment, borrowing better UI practices from both android and iPhone.
Excellent points, thanks for sharing. PDF at binary sheep... also appreciated. Now, who's up for a mindmeld? :-)
Recently, this blog entry was added on UI design patterns, complemented by this Google I/O video. Not quite prescriptive guidance yet, but a step on the way, and much more concrete on what to place where and how to make the interaction work than what I find in the answers supplied so far.
(Oddly, @Randolpho's link to the Android Developer's blog doesn't seem to include the design pattern post... oh, well, metadata tagging is never perfect.)