Effective-UI Best Practices · Effective-UI Best Practices Tim Bray, Developer Advocate Wednesday,...

41
Effective-UI Best Practices Tim Bray, Developer Advocate Wednesday, November 24, 2010

Transcript of Effective-UI Best Practices · Effective-UI Best Practices Tim Bray, Developer Advocate Wednesday,...

Page 1: Effective-UI Best Practices · Effective-UI Best Practices Tim Bray, Developer Advocate Wednesday, November 24, 2010

Effective-UI Best Practices

Tim Bray, Developer Advocate

Wednesday, November 24, 2010

Page 2: Effective-UI Best Practices · Effective-UI Best Practices Tim Bray, Developer Advocate Wednesday, November 24, 2010

Why care about UI?Better UI

Perceived Quality + Polish

Better Ratings

Better App Ranking

More Installs/Purchases

Wednesday, November 24, 2010

Page 3: Effective-UI Best Practices · Effective-UI Best Practices Tim Bray, Developer Advocate Wednesday, November 24, 2010

Why care about UI?

Wednesday, November 24, 2010

Page 4: Effective-UI Best Practices · Effective-UI Best Practices Tim Bray, Developer Advocate Wednesday, November 24, 2010

The perception of excellence

User'sexpectation

Your app's reality

Wednesday, November 24, 2010

Page 5: Effective-UI Best Practices · Effective-UI Best Practices Tim Bray, Developer Advocate Wednesday, November 24, 2010

• Public beta

Listen to your users

Wednesday, November 24, 2010

Page 6: Effective-UI Best Practices · Effective-UI Best Practices Tim Bray, Developer Advocate Wednesday, November 24, 2010

• Public beta alpha

Listen to your users

Wednesday, November 24, 2010

Page 7: Effective-UI Best Practices · Effective-UI Best Practices Tim Bray, Developer Advocate Wednesday, November 24, 2010

• Public beta alpha

• Release early, release often

• Provide a place for feedback

Listen to your users

Wednesday, November 24, 2010

Page 8: Effective-UI Best Practices · Effective-UI Best Practices Tim Bray, Developer Advocate Wednesday, November 24, 2010

Listen to your users

Wednesday, November 24, 2010

Page 9: Effective-UI Best Practices · Effective-UI Best Practices Tim Bray, Developer Advocate Wednesday, November 24, 2010

• Track every Activity

• Track settings

• Track exceptions and errors

Google Analytics for Mobile

// Start trackingtracker.start("UA-MY_CODE-XX", this);

// Register a page viewtracker.trackPageView("/map_view");

// Send views to servertracker.dispatch();

Wednesday, November 24, 2010

Page 10: Effective-UI Best Practices · Effective-UI Best Practices Tim Bray, Developer Advocate Wednesday, November 24, 2010

• Test-driven development

• Use the Monkey

• Public bug tracker

Fight bugs

Wednesday, November 24, 2010

Page 11: Effective-UI Best Practices · Effective-UI Best Practices Tim Bray, Developer Advocate Wednesday, November 24, 2010

Be responsive

Wednesday, November 24, 2010

Page 12: Effective-UI Best Practices · Effective-UI Best Practices Tim Bray, Developer Advocate Wednesday, November 24, 2010

Be usable

Wednesday, November 24, 2010

Page 13: Effective-UI Best Practices · Effective-UI Best Practices Tim Bray, Developer Advocate Wednesday, November 24, 2010

Be usable

“If an error is possible, someone

will make it.”– Donald Norman, author,

The Design of Everyday Things

Wednesday, November 24, 2010

Page 14: Effective-UI Best Practices · Effective-UI Best Practices Tim Bray, Developer Advocate Wednesday, November 24, 2010

Be usable

• Stick with common user-interface patterns

• Use big buttons and big fonts

• Gather analytics

Wednesday, November 24, 2010

Page 15: Effective-UI Best Practices · Effective-UI Best Practices Tim Bray, Developer Advocate Wednesday, November 24, 2010

Be usable

If complex instructions are required,

you’re doing it wrong.

Wednesday, November 24, 2010

Page 16: Effective-UI Best Practices · Effective-UI Best Practices Tim Bray, Developer Advocate Wednesday, November 24, 2010

Be usable

If complex instructions are required,

you’re doing it wrong.

Wednesday, November 24, 2010

Page 17: Effective-UI Best Practices · Effective-UI Best Practices Tim Bray, Developer Advocate Wednesday, November 24, 2010

Be beautiful

Wednesday, November 24, 2010

Page 18: Effective-UI Best Practices · Effective-UI Best Practices Tim Bray, Developer Advocate Wednesday, November 24, 2010

Be beautiful

Typography

fontkerning

leadingjustification

weight

Wednesday, November 24, 2010

Page 19: Effective-UI Best Practices · Effective-UI Best Practices Tim Bray, Developer Advocate Wednesday, November 24, 2010

Be beautiful

Typography

fontkerning

leadingjustification

weightColor

alpha color space

contrastpalette

Wednesday, November 24, 2010

Page 20: Effective-UI Best Practices · Effective-UI Best Practices Tim Bray, Developer Advocate Wednesday, November 24, 2010

Be beautiful

Typography

fontkerning

leadingjustification

weightColor

alpha color space

contrastpalette

Layoutlandscape portrait

handsettabletempty space

Wednesday, November 24, 2010

Page 21: Effective-UI Best Practices · Effective-UI Best Practices Tim Bray, Developer Advocate Wednesday, November 24, 2010

Be beautiful

Typography

fontkerning

leadingjustification

weightColor

alpha color space

contrastpalette

Layoutlandscape portrait

handsettabletempty space

Motiontransitions animations

touch reaction

Wednesday, November 24, 2010

Page 22: Effective-UI Best Practices · Effective-UI Best Practices Tim Bray, Developer Advocate Wednesday, November 24, 2010

Be beautiful

Work with professional visual and interaction

designers!

Wednesday, November 24, 2010

Page 23: Effective-UI Best Practices · Effective-UI Best Practices Tim Bray, Developer Advocate Wednesday, November 24, 2010

Be beautiful

Wednesday, November 24, 2010

Page 24: Effective-UI Best Practices · Effective-UI Best Practices Tim Bray, Developer Advocate Wednesday, November 24, 2010

Be beautiful

Wednesday, November 24, 2010

Page 25: Effective-UI Best Practices · Effective-UI Best Practices Tim Bray, Developer Advocate Wednesday, November 24, 2010

Be Android

• Don’t just port your UI over from another framework

• Don’t steal the back button

• Don’t build your own lists

• Dont build your own menu system

Wednesday, November 24, 2010

Page 26: Effective-UI Best Practices · Effective-UI Best Practices Tim Bray, Developer Advocate Wednesday, November 24, 2010

We believe:

Clarity over

simplicity

Wednesday, November 24, 2010

Page 27: Effective-UI Best Practices · Effective-UI Best Practices Tim Bray, Developer Advocate Wednesday, November 24, 2010

We believe:

Content over

chrome

Wednesday, November 24, 2010

Page 28: Effective-UI Best Practices · Effective-UI Best Practices Tim Bray, Developer Advocate Wednesday, November 24, 2010

We believe:

Cloud over local

Wednesday, November 24, 2010

Page 29: Effective-UI Best Practices · Effective-UI Best Practices Tim Bray, Developer Advocate Wednesday, November 24, 2010

We believe:

Recover, don’t warn

Wednesday, November 24, 2010

Page 30: Effective-UI Best Practices · Effective-UI Best Practices Tim Bray, Developer Advocate Wednesday, November 24, 2010

We believe:

More sizes are

better

Wednesday, November 24, 2010

Page 31: Effective-UI Best Practices · Effective-UI Best Practices Tim Bray, Developer Advocate Wednesday, November 24, 2010

We believe:

Landscape and

portrait

Wednesday, November 24, 2010

Page 32: Effective-UI Best Practices · Effective-UI Best Practices Tim Bray, Developer Advocate Wednesday, November 24, 2010

We believe:

Icons matter

Wednesday, November 24, 2010

Page 33: Effective-UI Best Practices · Effective-UI Best Practices Tim Bray, Developer Advocate Wednesday, November 24, 2010

We believe:

Good graphical feedback

default

disabled

focused

pressed

Wednesday, November 24, 2010

Page 34: Effective-UI Best Practices · Effective-UI Best Practices Tim Bray, Developer Advocate Wednesday, November 24, 2010

We believe:

Integrated not

standalone

Wednesday, November 24, 2010

Page 35: Effective-UI Best Practices · Effective-UI Best Practices Tim Bray, Developer Advocate Wednesday, November 24, 2010

These things are sacred• The status bar

• The back button

• The menu button

• The search button

Wednesday, November 24, 2010

Page 36: Effective-UI Best Practices · Effective-UI Best Practices Tim Bray, Developer Advocate Wednesday, November 24, 2010

Tools: Resource QualifiersOne .apk

contains all resources

System chooses at runtime which resources to use

Wednesday, November 24, 2010

Page 37: Effective-UI Best Practices · Effective-UI Best Practices Tim Bray, Developer Advocate Wednesday, November 24, 2010

Tools: 9-patch graphicsSimilar to CSS3 border-image

Border pixels indicate stretchable regions

Make both -mdpi and -hdpi versions!

Wednesday, November 24, 2010

Page 38: Effective-UI Best Practices · Effective-UI Best Practices Tim Bray, Developer Advocate Wednesday, November 24, 2010

Tools: Selector drawables<selector> <item android:drawable="@drawable/foo_disabled" android:state_enabled="false" ... /> <item android:drawable="@drawable/foo_pressed" android:state_pressed="true" ... /> <item android:drawable="@drawable/foo_focused" android:state_focused="true" ... /> <item android:drawable="@drawable/foo_default" /> </selector>

foo.xml:

Wednesday, November 24, 2010

Page 39: Effective-UI Best Practices · Effective-UI Best Practices Tim Bray, Developer Advocate Wednesday, November 24, 2010

Tools: Selector drawables

foo_default.png foo_disabled.png foo_focused.png foo_pressed.png

foo_default.png foo_disabled.png foo_focused.png foo_pressed.png

Wednesday, November 24, 2010

Page 40: Effective-UI Best Practices · Effective-UI Best Practices Tim Bray, Developer Advocate Wednesday, November 24, 2010

The Reward

Wednesday, November 24, 2010

Page 41: Effective-UI Best Practices · Effective-UI Best Practices Tim Bray, Developer Advocate Wednesday, November 24, 2010

Thank you!Tim Bray, Developer [email protected] android-developers.blogspot.com @AndroidDev

Wednesday, November 24, 2010