@@ -202,43 +186,44 @@ tabs. Fixed tabs in the main action bar can move to the top bar when the screen
The detail view allows you to view and act on your data. The layout of the detail view depends on the data type being displayed, and therefore differs widely among apps.
The detail view allows you to view and act on your data. The layout of the detail view depends on
+the data type being displayed, and therefore differs widely among apps.
Layout
-
Consider the activities people will perform in the detail view and arrange the layout accordingly.
+
Consider the activities people will perform in the detail view and arrange the layout accordingly.
+For immersive content, make use of the lights-out mode to allow for distraction-free viewing of
+full-screen content.
+
+
-
+
+
+ Google Books' detail view is all about replicating the experience of reading an actual book.
+ The page-flip animation reinforces that notion. To create an immersive experience the app
+ enters lights-out mode, which hides all system UI affordances.
+
The purpose of the People app's detail view is to surface communication options. The list view
@@ -207,25 +217,9 @@ in a category view.
-
-
-
-
Lights-out mode
-
Immersive content like media and games is best experienced full screen without distractions. But that doesn't mean you can't also offer actions on the content like sharing, commenting, or searching. If the user hasn't interacted with any of the controls after a short period of time, automatically fade away the action bar and all system UI affordances so the user can lean back and enjoy the content. We call this lights-out mode. Later, if the user wants to take some action, they can touch anywhere on the screen to exit lights-out mode and bring back the controls.
-
-
-
-
-
-
- Google Books' detail view replicates the immersive experience of reading an actual book through lights-out mode and a page-flip animation.
-
-
-
-
Make navigation between detail views efficient
If your users are likely to want to look at multiple items in sequence, allow them to navigate
-between items from within the detail view. Use swipe views or other techniques, such as thumbnail view controls,
+between items from within the detail view. Use swipe views or other techniques, such as filmstrips,
to achieve this.
@@ -235,8 +229,8 @@ to achieve this.
- In addition to supporting swipe gestures to move left or right through pages, Magazines provides a
- thumbnail view control that lets people quickly jump to specific pages.
+ In addition to supporting swipe gestures to move left or right through images, Gallery provides a
+ filmstrip control that lets people quickly jump to specific images.
Checklist
diff --git a/docs/html/design/patterns/confirming-acknowledging.jd b/docs/html/design/patterns/confirming-acknowledging.jd
deleted file mode 100644
index 28e4427..0000000
--- a/docs/html/design/patterns/confirming-acknowledging.jd
+++ /dev/null
@@ -1,76 +0,0 @@
-page.title=Confirming & Acknowledging
-@jd:body
-
-
In some situations, when a user invokes an action in your app, it's a good idea to confirm or acknowledge that action through text.
-
-
-
-
-
Confirming is asking the user to verify that they truly want to proceed with an action they just invoked. In some cases, the confirmation is presented along with a warning or critical information related to the action that they need to consider.
-
-
-
-
Acknowledging is displaying text to let the user know that the action they just invoked has been completed. This removes uncertainty about implicit operations that the system is taking. In some cases, the acknowledgment is presented along with an option to undo the action.
-
-
-
-
Communicating to users in these ways can help alleviate uncertainty about things that have happened or will happen. Confirming or acknowledging can also prevent users from making mistakes they might regret.
-
-
When to Confirm or Acknowledge User Actions
-
Not all actions warrant a confirmation or an acknowledgment. Use this flowchart to guide your design decisions.
-
-
-
Confirming
-
-
-
-
Example: Google Play Books
-
In this example, the user has requested to delete a book from their Google Play library. A dialog appears to confirm this action because it's important to understand that the book will no longer be available from any device.
-
When crafting a confirmation dialog, make the title meaningful by echoing the requested action.
-
-
- - Don't
Are you sure?
- - Don't
Warning!
- - Do
Delete from library?
-
-
-
-
-
-
Example: Android Beam
-
Confirmations don't necessarily have to be presented in a dialog with two buttons. After initiating Android Beam, the user is prompted to touch the content to be shared (in this example, it's a photo). If they decide not to proceed, they simply move their phone away.
-
-
-
-
Acknowledging
-
-
-
-
Example: Abandoned Gmail draft saved
-
In this example, if the user navigates back or up from the Gmail compose screen, something possibly unexpected happens: the current draft is automatically saved. An acknowledgment in the form of a toast makes that apparent. It fades after a few seconds.
-
Undo isn't appropriate here because saving was initiated by the app, not the user. And it's quick and easy to resume composing the message by navigating to the list of drafts.
-
-
-
-
-
Example: Gmail conversation deleted
-
After the user deletes a conversation from the list in Gmail, an acknowledgment appears with an undo option. The acknowledgment remains until the user takes an unrelated action, such as scrolling the list.
-
-
-
-
No Confirmation or Acknowledgment
-
-
-
-
Example: Removing an app from the Home Screen
-
Confirmation is unnecessary. This is a deliberate action: the user must drag and drop an item onto a relatively large and isolated target. Therefore, accidents are highly unlikely. But if the user regrets the decision, it only takes a few seconds to bring it back again.
-
Acknowledgment is unnecessary. The user will know the app is gone from the Home Screen because they made it disappear by dragging it away.
-
-
-
-
-
Example: +1'ing
-
Confirmation is unnecessary. If the user +1'd by accident, it's not a big deal. They can just touch the button again to undo the action.
-
Acknowledgment is unnecessary. The user will see the +1 button bounce and turn red. That's a very clear signal.
-
-
\ No newline at end of file
diff --git a/docs/html/design/patterns/help.jd b/docs/html/design/patterns/help.jd
deleted file mode 100644
index e42ea26..0000000
--- a/docs/html/design/patterns/help.jd
+++ /dev/null
@@ -1,114 +0,0 @@
-page.title=Help
-@jd:body
-
-
We wish we could guarantee that if you follow every piece of advice on this website, everyone will be able to learn and use your app without a hitch. Sadly, that's not the case.
-
-
Some of your users will run into questions or problems along the way. They'll be looking for answers within your app, and if they don't find them quickly, they may leave and never come back.
-
-
This page covers design patterns for making help accessible in your app and tips for creating help content for users who are eager for assistance.
-
-
Designing Help into Your App
-
-
Don't show unsolicited help, except in very limited cases
-
Naturally, you want everyone to quickly learn the ropes, discover the cool features, and get the most out of your app. So you might be tempted to present a one-time introductory slideshow, video, or splash screen to all new users when they first open the app. Or you might be drawn to the idea of displaying helpful text bubbles or dialogs when users interact with certain features for the first time.
-
In almost all cases, we advise against approaches like these because:
-
- - They're interruptions. People will be eager to start using your app, and anything you put in front of them will feel like an obstacle or possibly an annoyance, despite your good intentions. And because they didn't ask for it, they probably won't pay close attention to it.
- - They're usually not necessary. If you have usability concerns about an aspect of your app, don't just throw help at the problem. Try to solve it in the UI. Apply Android design patterns, styles, and building blocks, and you'll go a long way in reducing the need to educate your users.
-
-
The only reason for showing pure help content to new users unsolicited is:
-To teach high value functionality that's only available through an atypical use of a gesture.
-
-
For example, we use help content to teach users how to place apps on their Home Screen. This functionality is:
-
-
-
- - High value
-
Without it, users wouldn't be able to customize the most frequently-visited Android screen to meet their needs.
- - Available only through a gesture
-
Users can't do this through a button or a menu.
- - Atypical for the gesture
-
Many high value functions invoked through a gesture - like scrolling, swiping tabs, and turning pages - are common and yield expected results. Users will be able to discover them in your app, and unsolicited help is unnecessary. But here, the gesture does something unexpected: press and hold doesn't just select an app, it also immediately navigates to the Home Screen and creates a shortcut to the app that can then be dragged around.
-
-
However, this is an exceptional case. Most functionality doesn't meet all three of these criteria.
-
-
-
-
- The first time each user visits the All Apps screen, a semi-transparent overlay appears to teach an important gesture.
-
-
-
Bottom line: when it comes to offering help in your app, it's much better to let users come to you when they need it.
-
-
-
Follow the standard design for navigating to help
-
-
On every screen in your app, offer help in the action overflow. Always make it the very last item in the menu and label it "Help".
-
-
-
-
-
-
-
-
- Even if your screen has no other action overflow items, "Help" should appear there and not be promoted to the action bar.
-
-
-
We've established this standard design so that when users are desperate for help, they won't have to hunt to find it (see design principle: Give me tricks that work everywhere).
-
-
-
Assume that every call for help is urgent
-
-
In addition to help, you might want to expose miscellaneous other information, such as copyright info, credits, terms of service, and privacy policy.
-
-
Let users access this information through your Help menu item, but don't give it prominence equal to the core help content. Optimize the flow for people who have urgent questions about how to do something or why something is happening in your app. The smaller subset of users who are looking for legal fine print or the names of the people who created the app won't be as burdened by taking a few extra steps.
-
-
The same is true for any communication options you might want to provide, such as contacting customer support or submitting feedback. Offer these options in a way that doesn't add an extra step before users see help. When you put the help content forward, you increase the likelihood that users will find the answers on their own, which in turn reduces your support costs.
-
-
When someone chooses "Help":
-
-
-
-
-
-
Don't
-
Present a dialog asking them to choose between help and other options.
-
-
-
Better
-
Immediately launch a web browser with help content. Place other options in a footer.
-
-
-
Even Better
-
Build a help screen in your app and offer other options in the action bar.
-
This requires more development work than launching a web browser, but it's a nicer experience for users because they don't leave your app to get the help they need and doesn't require a network connection.
-
-
-
-
Principles for Writing On-Screen Help Content
-
-
Help is part of the UI
-
On-screen help is an extension of your app's UI, not a description of it. All words on the screen from the core app to the help should follow our Writing Style principles so that the end-to-end experience feels seamless and cohesive.
-
-
Make every pixel count
-
It's not necessary to document every single detail about your app, especially things that are extremely apparent just by looking at the UI, or behaviors that are standard for the platform. Surface just the key additional information that the on-screen text doesn't have room to describe, in a way that makes it easy to map to the screen.
-
-
Pictures are faster than words
-
In describing key UI elements and providing step-by-step instructions, consider combining text with icons, partial screenshots with callouts, and other imagery. You'll need fewer words to explain things, and users will absorb the information more quickly.
-
-
Help me scan, not read
-
People don't read help from start to finish. They scan around, looking for a piece of information containing the answer they need. Make it less burdensome with friendly formatting and layout choices like bold headings, bulleted and numbered lists, tables, and white space between paragraphs. And if you have a large amount of content, divide it into multiple screens to cut down on scrolling.
-
-
Take me straight to the answer
-
What's better than a screen that's easy to scan? A screen that requires no scanning at all because the answer's right there. Consider having each screen in your app navigate to help that's relevant just to that screen. We call this contextual help, and it's the holy grail of user assistance. If you take this approach, be sure to also provide a way to get to the rest of the help content.
\ No newline at end of file
diff --git a/docs/html/design/patterns/multi-pane-layouts.jd b/docs/html/design/patterns/multi-pane-layouts.jd
index f752be2..0e63e32 100644
--- a/docs/html/design/patterns/multi-pane-layouts.jd
+++ b/docs/html/design/patterns/multi-pane-layouts.jd
@@ -26,8 +26,8 @@ left pane. Make sure to keep the item in the left pane selected in order to esta
relationship between the panels.
Compound Views and Orientation Changes
-
Screens should strive to have the same functionality regardless of orientation. If you use a compound view in
-one orientation, try not to split it up when the user rotates the screen. There are several techniques
+
Screens should have the same functionality regardless of orientation. If you use a compound view in
+one orientation, don't split it up when the user rotates the screen. There are several techniques
you can use to adjust the layout after orientation change while keeping functional parity intact.
@@ -83,7 +83,9 @@ width and vice versa.
Show/hide
-
If your screen cannot accommodate the compound view on rotation show the right pane in full screen view on rotation to portrait. Use the Up icon in action bar to show the parent screen.
+
After rotating the device, show the right pane in fullscreen view. Use the Up icon in the action bar
+to show the left panel and allow navigation to a different email. Hide the left panel by touching
+the content in the detail panel.
@@ -102,7 +104,7 @@ width and vice versa.
Look for opportunities to consolidate your views into multi-panel compound views.
-Make sure that your screens try to provide functional parity after the screen orientation
+
Make sure that your screens provide functional parity after the screen orientation
changes.
diff --git a/docs/html/design/patterns/new-4-0.jd b/docs/html/design/patterns/new-4-0.jd
new file mode 100644
index 0000000..91ebba7
--- /dev/null
+++ b/docs/html/design/patterns/new-4-0.jd
@@ -0,0 +1,71 @@
+page.title=New in Android 4.0
+@jd:body
+
+
+
+
+
Navigation bar
+
Android 4.0 removes the need for traditional hardware keys on phones by replacing them with a
+virtual navigation bar that houses the Back, Home and Recents buttons. Read the
+Compatibility pattern to learn how the OS adapts to
+phones with hardware buttons and how pre-Android 3.0 apps that rely on menu keys are supported.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Action bar
+
The action bar is the most important structural element of an Android app. It provides consistent
+navigation across the platform and allows your app to surface actions.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Multi-pane layouts
+
Creating apps that scale well across different form factors and screen sizes is important in the
+Android world. Multi-pane layouts allow you to combine different activities that show separately on
+smaller devices into richer compound views for tablets.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Selection
+
The long press gesture which was traditionally used to show contextual actions for objects is now
+used for data selection. When selecting data, contextual action bars allow you to surface actions.
+
+
+
+
+
+
+
+
diff --git a/docs/html/design/patterns/new.jd b/docs/html/design/patterns/new.jd
deleted file mode 100644
index 1fc4987..0000000
--- a/docs/html/design/patterns/new.jd
+++ /dev/null
@@ -1,114 +0,0 @@
-page.title=New in Android
-@jd:body
-
-
Jelly Bean - Android 4.1
-
-
Notifications
-
-
-
Notifications have received some notable enhancements in Android 4.1:
-
- - Users can act on notifications immediately from the drawer
- - Notifications are more flexible in size and layout
- - A priority flag helps sort notifications by importance
- - Notifications can be collapsed and expanded
-
-
-
The base notification layout has not changed, so app notifications designed for versions earlier than Jelly Bean still look and work the same. Check the updated Notifications page for more details.
-
-
-
-
-
-
-
-
-
Resizable Application Widgets
-
-
-
Widgets are an essential aspect of home screen customization, allowing "at-a-glance" views of an app's most important data and functionality right from the user's home screen. Android 4.1 introduces improved App Widgets that can automatically resize and load different content based upon a number of factors including:
-
- - Where the user drops them on the home screen
- - The size to which the user expands them
- - The amount of room available on the home screen
-
-
-
You can supply separate landscape and portrait layouts for your widgets, which the system inflates as appropriate when the screen orientation changes. The Application Widgets has useful details about widget types, limitations, and design considerations.
-
-
-
-
-
-
-
-
-
Accessibility
-
-
-
One of Android's missions is to organize the world's information and make it universally accessible and useful. Our mission applies to all users-including people with disabilities such as visual impairment, color deficiency, hearing loss, and limited dexterity.
-
The new Accessibility page provides details on how to design your app to be as accessible as possible by:
-
- - Making navigation intuitive
- - Using recommended touch target sizes
- - Labeling visual UI elements meaningfully
- - Providing alternatives to affordances that time out
- - Using standard framework controls or enable TalkBack for custom controls
- - Trying it out yourself
-
-
-
You can supply separate landscape and portrait layouts for your widgets, which the system inflates as appropriate when the screen orientation changes. The [Application Widgets] (should be link) has useful details about widget types, limitations, and design considerations.
-
-
-
-
-
-
-
Ice Cream Sandwich - Android 4.0
-
-
Navigation bar
-
-
-
Android 4.0 removes the need for traditional hardware keys on phones by replacing them with a
- virtual navigation bar that houses the Back, Home and Recents buttons. Read the Compatibility pattern to learn how the OS adapts to phones with hardware buttons and how pre-Android 3.0 apps that rely on menu keys are supported.
-
-
-
-
-
-
-
-
-
Action bar
-
-
-
The action bar is the most important structural element of an Android app. It provides consistent navigation across the platform and allows your app to surface actions.
-
-
-
-
-
-
-
-
-
Multi-pane layouts
-
-
-
Creating apps that scale well across different form factors and screen sizes is important in the Android world. Multi-pane layouts allow you to combine different activities that show separately on smaller devices into richer compound views for tablets.
-
-
-
-
-
-
-
-
-
Selection
-
-
-
-
The long press gesture which was traditionally used to show contextual actions for objects is now used for data selection. When selecting data, contextual action bars allow you to surface actions.
-
-
-
-
-
diff --git a/docs/html/design/patterns/notifications.jd b/docs/html/design/patterns/notifications.jd
index fbb05e3..ad88a01 100644
--- a/docs/html/design/patterns/notifications.jd
+++ b/docs/html/design/patterns/notifications.jd
@@ -1,164 +1,11 @@
page.title=Notifications
@jd:body
-
The notification system allows your app to keep the user informed about events, such as new chat messages or a calendar event. Think of notifications as a news channel that alerts the user to important events as they happen or a log that chronicles events while the user is not paying attention.
-
-
New in Jelly Bean
-
In Jelly Bean, notifications received their most important structural and functional update since the beginning of Android.
-
- - Notifications can include actions that enable the user to immediately act on a notification from the notification drawer.
- - Notifications are now more flexible in size and layout.
- - Stacked notifications can be collapsed and expanded.
- - A priority flag was introduced that helps to sort notifications by importance rather than time only.
-
-
-
Anatomy of a notification
-
-
-
-
Base Layout
-
At a minimum, all notifications consist of a base layout, including:
-
- - the sending application's notification icon or the sender's photo
- - a notification title and message
- - an optional timestamp
- - a secondary icon to identify the sending application when the sender's image is shown for the main icon
-
-
The base notification layout has not changed in Jelly Bean, so app notifications designed for versions earlier than Jelly Bean still look and work the same.
-
-
-
-
- Base layout of a notification
-
-
-
-
-
Expanded layouts
-
With Jelly Bean you have the option to provide more event detail. You can use this to show the first few lines of a message or show a larger image preview. This provides the user with additional context, and - in some cases - may allow the user to read a message in its entirety. The user can pinch-zoom or two-finger glide in order to toggle between base and expanded layouts. For single event notifications, Android provides two expanded layout templates (text and image) for you to re-use in your application.
-
-
-
-
Actions
-
-
-
Starting with Jelly Bean, Android supports optional actions that are displayed at the bottom of the notification. With actions, users can handle the most common tasks for a particular notification from within the notification shade without having to open the originating application. This speeds up interaction and, in conjunction with "swipe-to-dismiss", helps users to streamline their notification triaging experience.
-
Be judicious with how many actions you include with a notification. The more actions you include, the more cognitive complexity you create. Limit yourself to the fewest number of actions possible by only including the most imminently important and meaningful ones.
-
Good candidates for actions on notifications are actions that are:
-
- - essential, frequent and typical for the content type you're displaying
- - time-critical
- - not overlapping with neighboring actions
-
-
Avoid actions that are:
-
- - ambiguous
- - implicit to the default action of the notification (such as "Read" or "Open")
-
-
-
-
-
- Calendar reminder notification with two actions
-
-
-
-
-
You can specify a maximum of three actions, each consisting of an action icon and an action name. Adding actions to a base layout will make the notification expandable, even if the notification doesn't have an expanded layout. Since actions are only shown for expanded notifications and are otherwise hidden, you must make sure that any action a user can invoke from a notification is available from within the associated application as well.
-
-
Design guidelines
-
-
-
-
-
-
Make it personal
-
For notifications of items sent by another user (such as a message or status update), include that person's image.
-
Remember to include the app icon as a secondary icon in the notification, so that the user can still identify which app posted it.
-
-
-
-
Navigate to the right place
-
When the user touches a notification, open your app to the place where the user can consume and
-act upon the data referenced in the notification. In most cases this will be the detail view of a
-single data item such as a message, but it might also be a summary view if the notification is
-stacked (see Stacked notifications below) and references multiple items. If in any of those cases
-the user is taken to a hierarchy level below your app's top-level, insert navigation into your app's
-back stack to allow them to navigate to your app's top level using the system back key. For more
-information, see the chapter on System-to-app navigation in the
-Navigation design pattern.
-
Timestamps for time sensitive events
-
By default, standard Android notifications include a timestamp. Consider
-whether the timestamp is valuable in the context of your notification.
-
Include a timestamp if the user likely needs to know how long ago the notification occurred. Good
-candidates for timestamps include communication notifications (email, messaging, chat, voicemail)
-where the user may need the timestamp information to understand the context of a message or to
-tailor a response.
-
-
Correctly set and manage notification priority
-
Starting with Jelly Bean, Android now supports a priority flag for notifications. It allows you to influence where your notification will appear in comparison to other notifications and help to make sure that users always see their most important notifications first. You can choose from the following priority levels when posting a notification:
-
-
-
-
-
- Priority |
- Use |
-
-
- MAX |
- Use for critical and urgent notifications that alert the user to a condition that is time-critical or needs to be resolved before they can continue with a particular task. |
-
-
- HIGH |
- Use high priority notifications primarily for important communication, such as message or chat events with content that is particularly interesting for the user. |
-
-
- DEFAULT |
- The default priority. Keep all notifications that don't fall into any of the other categories at this priority level. |
-
-
- LOW |
- Use for notifications that you still want the user to be informed about, but that rate low in urgency. |
-
-
- MIN |
- Contextual/background information (e.g. weather information, contextual location information). Minimum priority notifications will not show in the status bar. The user will only discover them when they expand the notification tray. |
-
-
-
-
Stack your notifications
-
If your app creates a notification while another of the same type is still pending, avoid creating
-an altogether new notification object. Instead, stack the notification.
-
A stacked notification builds a summary description and allows the user to understand how many
-notifications of a particular kind are pending.
-
Don't:
-
-
-
-
Do:
-
-
-
-
You can provide more detail about the individual notifications that make up a stack by using the expanded digest layout. This allows users to gain a better sense of which notifications are pending and if they are interesting enough to be read in detail within the associated app.
-
-
-
-
Make notifications optional
-
Users should always be in control of notifications. Allow the user to silence the notifications from
-your app by adding a notification settings item to your application settings.
-
Use distinct icons
-
By glancing at the notification area, the user should be able to discern what notification types are
-currently pending.
-
Do:
-
Look at the notification icons the Android apps already provide and create notification icons for
- your app that are sufficiently distinct in appearance.
-
Don't:
-
Use color to distinguish your app from others. Notification icons should be white.
-
-
Building notifications that users care about
-
To create an app that feels streamlined, pleasant, and respectful, it is important to design your notifications carefully. Notifications embody your app's voice, and contribute to your app's personality. Unwanted or unimportant notifications can annoy the user, so use them judiciously.
-
+
The notification system allows your app to keep the user informed about important events, such as
+new messages in a chat app or a calendar event.
+
To create an app that feels streamlined, pleasant, and respectful, it is important to design your
+notifications carefully. Notifications embody your app's voice, and contribute to your app's
+personality. Unwanted or unimportant notifications can annoy the user, so use them judiciously.
When to display a notification
To create an application that people love, it's important to recognize that the user's attention and
focus is a resource that must be protected. To use an analogy that might resonate with software
@@ -219,10 +66,108 @@ develop a widget that they can choose to place on their home screen.