Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Android Design: Beyond the Guidelines

Kevin Grant
December 08, 2013

Android Design: Beyond the Guidelines

With Android Design guidelines becoming more robust and easier to implement, it's easy to have your application's design lost in a homogenized sea of "Holo Themed" user interfaces.

When is it ok to break away from the Design Guidelines? In this session, we will examine and showcase examples where developers have "thought outside the box" and implemented beautiful interfaces and animations that create captivating and unique experiences for their users.

We will also discuss how to achieve some of these design features in your own applications by looking at common patterns for a variety of designs that will leave your users delightfully surprised and help you push the boundaries of Android's paradigms in the future.

Note: Most images are animated gifs, but unfortunately will not animate in this format.

Kevin Grant

December 08, 2013
Tweet

More Decks by Kevin Grant

Other Decks in Design

Transcript

  1. BEYOND THE GUIDELINES Kevin Grant Creating character and identity in

    your Android applications Thursday, November 7, 13
  2. ‣ Default styles are easy to implement All holo apps

    look the same Thursday, November 7, 13
  3. ‣ Default styles are easy to implement ‣ ActionBar is

    really hard to customize All holo apps look the same Thursday, November 7, 13
  4. ‣ Default styles are easy to implement ‣ ActionBar is

    really hard to customize ‣ Deviation isn’t encouraged All holo apps look the same Thursday, November 7, 13
  5. Weak Branding (these could all be the same) News New

    York Times Circa Currents Thursday, November 7, 13
  6. ‣ Creativity is rewarded ‣ “Generally fit” into ecosystem is

    enough Users wants results, not rules Thursday, November 7, 13
  7. ‣ Creativity is rewarded ‣ “Generally fit” into ecosystem is

    enough ‣ Don’t listen to Android design trolls Users wants results, not rules Thursday, November 7, 13
  8. “Don’t port your iOS design to android” This doesn’t mean

    design should not be a priority Thursday, November 7, 13
  9. Going to cover 3 topics today ‣ Say YES to

    your designers Thursday, November 7, 13
  10. Going to cover 3 topics today ‣ Say YES to

    your designers ‣ Make your applications WHIMSICAL Thursday, November 7, 13
  11. Going to cover 3 topics today ‣ Say YES to

    your designers ‣ Make your applications WHIMSICAL ‣ Be a DESIGN LEADER Thursday, November 7, 13
  12. Wouldn’t it be great if... What do you think about...

    How hard would it be to... Thursday, November 7, 13
  13. ‣ Designers aren’t here to ruin the product or everyone’s

    lives (just yours) Don’t be that guy Thursday, November 7, 13
  14. ‣ Designers aren’t here to ruin the product or everyone’s

    lives (just yours) ‣ Most of the time, they’re requests are reasonable, it just requires extra work Don’t be that guy Thursday, November 7, 13
  15. ‣ Designers aren’t here to ruin the product or everyone’s

    lives (just yours) ‣ Most of the time, they’re requests are reasonable, it just requires extra work ‣ If your designer asks you to move a pixel, YOU ASK HOW HIGH. Don’t be that guy Thursday, November 7, 13
  16. Example Can we increase the padding between the home icon

    and the back carrot? Thursday, November 7, 13
  17. Example Can we increase the padding between the home icon

    and the back carrot? Ugh, Google designed it this way for a reason No Thursday, November 7, 13
  18. Example Can we increase the padding between the home icon

    and the back carrot? Ugh, Google designed it this way for a reason No I’m sure there’s something we can do, I’ll get back to you Yes! Thursday, November 7, 13
  19. Example Can we change the text color of a action

    button based on it’s state? E.G. FOLLOW should be white, UNFOLLOW should be gray. Thursday, November 7, 13
  20. Example Can we change the text color of a action

    button based on it’s state? E.G. FOLLOW should be white, UNFOLLOW should be gray. You can’t really change the color of action bar text programmatically. No Thursday, November 7, 13
  21. Example Can we change the text color of a action

    button based on it’s state? E.G. FOLLOW should be white, UNFOLLOW should be gray. You can’t really change the color of action bar text programmatically. No Sure! It’s not as straightforward as just changing the color, but we can create a custom view and use that instead. Yes! Thursday, November 7, 13
  22. Example Can we add a cool flippy animation to our

    dialogs to make them feel like cards? Thursday, November 7, 13
  23. Example Can we add a cool flippy animation to our

    dialogs to make them feel like cards? Unfortunately, animating dialogs isn’t supported very well and there isn’t much we can do. No Thursday, November 7, 13
  24. Example Can we add a cool flippy animation to our

    dialogs to make them feel like cards? Unfortunately, animating dialogs isn’t supported very well and there isn’t much we can do. No Hmm that could be tricky!, We can style an Activity to look like a dialog and use Activity Transitions Yes! Thursday, November 7, 13
  25. Note to Designers ‣ We probably say no too often

    ‣ Don’t hate on your developers! It’s not their fault! (Random fun stuff isn’t well supported) Thursday, November 7, 13
  26. Note to Designers ‣ We probably say no too often

    ‣ Don’t hate on your developers! It’s not their fault! (Random fun stuff isn’t well supported) ‣ We’re afraid to work on things that have unpredictable deadlines Thursday, November 7, 13
  27. Note to Designers ‣ We probably say no too often

    ‣ Don’t hate on your developers! It’s not their fault! (Random fun stuff isn’t well supported) ‣ We’re afraid to work on things that have unpredictable deadlines ‣ Work with your project managers to make sure that developers feel comfortable making design risks that might end up not being used Thursday, November 7, 13
  28. Case Study - Trending Tag Can we have these little

    boxes, and inside the boxes, new posts come in from the left and right, kind of like the Windows live tiles? Thursday, November 7, 13
  29. ‣ HorizontalListView (Special touch interception for GingerBread) ‣ Added as

    a Header to List Architecture Thursday, November 7, 13
  30. ‣ HorizontalListView (Special touch interception for GingerBread) ‣ Added as

    a Header to List ‣ CustomViewSwitcher Architecture Thursday, November 7, 13
  31. ‣ HorizontalListView (Special touch interception for GingerBread) ‣ Added as

    a Header to List ‣ CustomViewSwitcher ‣ Generates child views Architecture Thursday, November 7, 13
  32. ‣ HorizontalListView (Special touch interception for GingerBread) ‣ Added as

    a Header to List ‣ CustomViewSwitcher ‣ Generates child views ‣ Manages animations and state Architecture Thursday, November 7, 13
  33. ‣ HorizontalListView (Special touch interception for GingerBread) ‣ Added as

    a Header to List ‣ CustomViewSwitcher ‣ Generates child views ‣ Manages animations and state ‣ Manages header tag Architecture Thursday, November 7, 13
  34. ‣ HorizontalListView (Special touch interception for GingerBread) ‣ Added as

    a Header to List ‣ CustomViewSwitcher ‣ Generates child views ‣ Manages animations and state ‣ Manages header tag ‣ 7 types of child views Architecture Thursday, November 7, 13
  35. ‣ HorizontalListView (Special touch interception for GingerBread) ‣ Added as

    a Header to List ‣ CustomViewSwitcher ‣ Generates child views ‣ Manages animations and state ‣ Manages header tag ‣ 7 types of child views ‣ Stateless Architecture Thursday, November 7, 13
  36. ‣ HorizontalListView (Special touch interception for GingerBread) ‣ Added as

    a Header to List ‣ CustomViewSwitcher ‣ Generates child views ‣ Manages animations and state ‣ Manages header tag ‣ 7 types of child views ‣ Stateless ‣ Manages it’s own design Architecture Thursday, November 7, 13
  37. ‣ Since main screen is a ViewPager, the Animations were

    always running Issues Always animating Thursday, November 7, 13
  38. ‣ Since main screen is a ViewPager, the Animations were

    always running ‣ Animation implementation breaking other unrelated animations Issues Always animating Thursday, November 7, 13
  39. ‣ Since main screen is a ViewPager, the Animations were

    always running ‣ Animation implementation breaking other unrelated animations ‣ Header Views are never recycled Issues Always animating Thursday, November 7, 13
  40. ‣ Since main screen is a ViewPager, the Animations were

    always running ‣ Animation implementation breaking other unrelated animations ‣ Header Views are never recycled ‣ always animating even if not visible Issues Always animating Thursday, November 7, 13
  41. ‣ Since main screen is a ViewPager, the Animations were

    always running ‣ Animation implementation breaking other unrelated animations ‣ Header Views are never recycled ‣ always animating even if not visible ‣ Hurts scroll performance Issues Always animating Thursday, November 7, 13
  42. - Actionable items outside of the ActionBar - Unique experience

    of blending your passive content Screen Action Items Thursday, November 7, 13
  43. - Actionable items outside of the ActionBar - Unique experience

    of blending your passive content - Provide unique branding Screen Action Items Thursday, November 7, 13
  44. - Actionable items outside of the ActionBar - Unique experience

    of blending your passive content - Provide unique branding - Great place to have “fun” Screen Action Items Thursday, November 7, 13
  45. Screen Action Items can be difficult to integrate into existing

    code bases. Use case questions must be answered: How’d we do it? Thursday, November 7, 13
  46. Screen Action Items can be difficult to integrate into existing

    code bases. Use case questions must be answered: - Shoud view always be present? How’d we do it? Thursday, November 7, 13
  47. Screen Action Items can be difficult to integrate into existing

    code bases. Use case questions must be answered: - Shoud view always be present? - Hide on select or scroll? How’d we do it? Thursday, November 7, 13
  48. Screen Action Items can be difficult to integrate into existing

    code bases. Use case questions must be answered: - Shoud view always be present? - Hide on select or scroll? - Every Activity (or fragment)? How’d we do it? Thursday, November 7, 13
  49. Screen Action Items can be difficult to integrate into existing

    code bases. Use case questions must be answered: - Shoud view always be present? - Hide on select or scroll? - Every Activity (or fragment)? - Moveable? How’d we do it? Thursday, November 7, 13
  50. - Create Views Dynamically - Add Views to DecorView for

    maximum flexibility How’d we do it? Thursday, November 7, 13
  51. - Create Views Dynamically - Add Views to DecorView for

    maximum flexibility (getWindow().getDecorView()) How’d we do it? Thursday, November 7, 13
  52. - Create Views Dynamically - Add Views to DecorView for

    maximum flexibility (getWindow().getDecorView()) - If targeting API < 11, position using left / top margins How’d we do it? Thursday, November 7, 13
  53. - Create Views Dynamically - Add Views to DecorView for

    maximum flexibility (getWindow().getDecorView()) - If targeting API < 11, position using left / top margins - If targeting API >= 11, can position using setX / setY or using animators How’d we do it? Thursday, November 7, 13
  54. Growing Press State Mileage may vary based on how you

    want to detect “move outside” Thursday, November 7, 13
  55. Growing Press State continued Use more than 2 values Use

    Different interpolators Thursday, November 7, 13
  56. Dialog Themed Activitys and Popup Components to reduce Navigation Remorse

    What can I do today? Facebook Tumblr Thursday, November 7, 13
  57. Action Animations make me feel special What can I do

    today? Google+ Tumblr Thursday, November 7, 13
  58. Everything we have started as someones idea ‣ ViewPager ‣

    Double-Tap to zoom Thursday, November 7, 13
  59. Everything we have started as someones idea ‣ ViewPager ‣

    Double-Tap to zoom ‣ Slide to dismiss list-items Thursday, November 7, 13
  60. Everything we have started as someones idea ‣ ViewPager ‣

    Double-Tap to zoom ‣ Slide to dismiss list-items ‣ Pretty much everything Thursday, November 7, 13
  61. Navigation Drawer Remember when this was socially unacceptable? ‣ Junk

    Drawer / Trash Drawer Thursday, November 7, 13
  62. Navigation Drawer Remember when this was socially unacceptable? ‣ Junk

    Drawer / Trash Drawer ‣ Sloppy Design Thursday, November 7, 13
  63. Navigation Drawer Remember when this was socially unacceptable? ‣ Junk

    Drawer / Trash Drawer ‣ Sloppy Design ‣ Doing it wrong Thursday, November 7, 13
  64. But what if I want to change it a bit

    Thursday, November 7, 13
  65. But what if I want to change it a bit

    Generates a lot of rage Thursday, November 7, 13
  66. But what if I want to change it a bit

    Generates a lot of rage Thursday, November 7, 13
  67. Pull To Refresh Remember when this was considered bad design

    for Android? Thursday, November 7, 13
  68. Now it’s a behavior all users expect show images of

    all the apps Text Twitter Foursquare Path Thursday, November 7, 13
  69. Now it’s a behavior all users expect show images of

    all the apps Text Twitter Foursquare Path (the booger) Thursday, November 7, 13
  70. And Google added it into all of their products No

    official support yet =( Gmail Google+ Drive Thursday, November 7, 13
  71. How does Chrome even fit in? I dunno, but it’s

    awesome Thursday, November 7, 13
  72. What does this all mean? Do something awesome (but don’t

    use lens flares) Thursday, November 7, 13
  73. Even though I like to pretend it does iOS !=

    Bad Thursday, November 7, 13
  74. - Up Button too far away Design for a tiny

    hand. Thursday, November 7, 13
  75. - Up Button too far away - Back button provides

    no context Design for a tiny hand. Thursday, November 7, 13
  76. - Up Button too far away - Back button provides

    no context - Why not? Design for a tiny hand. Thursday, November 7, 13
  77. How’d we do it Before launching any activity, capture the

    bitmap of the current window and save it in image cache. Thursday, November 7, 13
  78. How’d we do it Before launching any activity, capture the

    bitmap of the current window and save it in image cache. Override setContentView in the receiving activity and set the bitmap on an ImageView behind the activity, on the DecorView Thursday, November 7, 13
  79. How’d we do it Before launching any activity, capture the

    bitmap of the current window and save it in image cache. Override setContentView in the receiving activity and set the bitmap on an ImageView behind the activity, on the DecorView Open source coming soon! Thursday, November 7, 13
  80. ‣ Say YES, it’s what makes our shit awesome ‣

    Be WHIMSICAL! Wrapping up Thursday, November 7, 13
  81. ‣ Say YES, it’s what makes our shit awesome ‣

    Be WHIMSICAL! ‣ Be a DESIGN LEADER and push beyond the guidelines Wrapping up Thursday, November 7, 13