A button consists of text and/or an image that clearly communicates what action will occur when the
-user touches it. Android supports two different types of buttons: basic buttons and borderless
-buttons. Both can contain text labels and/or images.
-
-
-
-
-
-
Basic Buttons
-
-
Basic buttons are traditional buttons with borders and background. Android supports two styles for
-basic buttons: default and small. Default buttons have slightly larger font size and are optimized
-for display outside of form content. Small buttons are intended for display alongside other content.
-They have a smaller font and smaller minimum height. Use small buttons in forms where they need to
-align with other UI elements.
-
-
-
-
-
- Default buttons in Holo Dark & Light.
-
-
-
-
- Small buttons in Holo Dark & Light.
-
-
-
-
-
Borderless Buttons
-
-
Borderless buttons resemble basic buttons except that they have no borders or background. You can
-use borderless buttons with both icons and text. Borderless buttons are visually more lightweight
-than basic buttons and integrate nicely with other content.
A button consists of text and/or an image that clearly communicates what action will occur when the
+user touches it. Android supports two different types of buttons: basic buttons and borderless
+buttons. Both can contain text labels and/or images.
+
+
+
+
+
+
Basic Buttons
+
+
Basic buttons are traditional buttons with borders and background. Android supports two styles for
+basic buttons: default and small. Default buttons have slightly larger font size and are optimized
+for display outside of form content. Small buttons are intended for display alongside other content.
+They have a smaller font and smaller minimum height. Use small buttons in forms where they need to
+align with other UI elements.
+
+
+
+
+
+ Default buttons in Holo Dark & Light.
+
+
+
+
+ Small buttons in Holo Dark & Light.
+
+
+
+
+
Borderless Buttons
+
+
Borderless buttons resemble basic buttons except that they have no borders or background. You can
+use borderless buttons with both icons and text. Borderless buttons are visually more lightweight
+than basic buttons and integrate nicely with other content.
Dialogs prompt the user for decisions or additional information required by the app to continue a
-task. Such requests can range from simple Cancel/OK decisions to more complex layouts asking the
-user to adjust settings or enter text.
-
-
-
-
-
-
-
-
Optional title region
-
The title introduces the content of your dialog. It can, for example, identify the name of a
- setting that the user is about to change, or request a decision.
-
-
-
Content area
-
Dialog content varies widely. For settings dialogs, a dialog may contain UI elements such as
- sliders, text fields, checkboxes, or radio buttons that allow the user to change app or system
- settings. In other cases, such as alerts, the content may consist solely of text that provides
- further context for a user decision.
-
-
-
Action buttons
-
Action buttons are typically Cancel and/or OK, with OK indicating the preferred or most likely
- action. However, if the options consist of specific actions such as Close or Wait rather than
- a confirmation or cancellation of the action described in the content, then all the buttons
- should be active verbs. As a rule, the dismissive action of a dialog is always on the left
- whereas the affirmative actions are on the right.
-
-
-
-
-
-
-
- Samples of typical dialog use in Android.
-
-
-
Alerts
-
-
Alerts inform the user about a situation that requires their confirmation or acknowledgement before
-proceeding. They differ slightly in appearance based upon the severity and impact of the message
-conveyed.
-
-
-
-
-
-
-
-
-
-
Alerts without title bars
-
Most alerts don't need titles. Usually the decision doesn't have a severe impact and can be summed
-up succinctly in a sentence or two. The content area should either ask a question (such as "Delete
-this conversation?") or make a clear statement whose relationship to the action buttons is obvious.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Alerts with title bars
-
Use alerts with title bars sparingly. They are appropriate only when a high-risk operation involving
-potential loss of data, connectivity, extra charges, and so on requires a clear question or
-statement (the title) and some additional explanation (in the content area).
-
Keep the question or statement short: for example, "Erase USB storage?" Avoid apologies. A user
-should be able to skip the content completely and still have a clear idea of what choices are
-available based on the title and the text of the action buttons.
-
-
-
-
-
-
Popups
-
-
Popups are lightweight version of dialogs that require a single selection from the user. Popups
-don't have have explicit buttons that accept or cancel the operation. Instead, making a selection
-advances the workflow, and simply touching outside the popup dismisses it.
-
-
-
-
-
Toasts
-
-
-
-
-
-
-
-
Toasts provide lightweight feedback about an operation in a small popup. For example, navigating
-away from an email before you send it triggers a "Draft saved" toast to let you know that you can
-continue editing later. Toasts automatically disappear after a timeout.
Dialogs prompt the user for decisions or additional information required by the app to continue a
+task. Such requests can range from simple Cancel/OK decisions to more complex layouts asking the
+user to adjust settings or enter text.
+
+
+
+
+
+
+
+
Optional title region
+
The title introduces the content of your dialog. It can, for example, identify the name of a
+ setting that the user is about to change, or request a decision.
+
+
+
Content area
+
Dialog content varies widely. For settings dialogs, a dialog may contain UI elements such as
+ sliders, text fields, checkboxes, or radio buttons that allow the user to change app or system
+ settings. In other cases, such as alerts, the content may consist solely of text that provides
+ further context for a user decision.
+
+
+
Action buttons
+
Action buttons are typically Cancel and/or OK, with OK indicating the preferred or most likely
+ action. However, if the options consist of specific actions such as Close or Wait rather than
+ a confirmation or cancellation of the action described in the content, then all the buttons
+ should be active verbs. As a rule, the dismissive action of a dialog is always on the left
+ whereas the affirmative actions are on the right.
+
+
+
+
+
+
+
+ Samples of typical dialog use in Android.
+
+
+
Alerts
+
+
Alerts inform the user about a situation that requires their confirmation or acknowledgement before
+proceeding. They differ slightly in appearance based upon the severity and impact of the message
+conveyed.
+
+
+
+
+
+
+
+
+
+
Alerts without title bars
+
Most alerts don't need titles. Usually the decision doesn't have a severe impact and can be summed
+up succinctly in a sentence or two. The content area should either ask a question (such as "Delete
+this conversation?") or make a clear statement whose relationship to the action buttons is obvious.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Alerts with title bars
+
Use alerts with title bars sparingly. They are appropriate only when a high-risk operation involving
+potential loss of data, connectivity, extra charges, and so on requires a clear question or
+statement (the title) and some additional explanation (in the content area).
+
Keep the question or statement short: for example, "Erase USB storage?" Avoid apologies. A user
+should be able to skip the content completely and still have a clear idea of what choices are
+available based on the title and the text of the action buttons.
+
+
+
+
+
+
Popups
+
+
Popups are lightweight version of dialogs that require a single selection from the user. Popups
+don't have have explicit buttons that accept or cancel the operation. Instead, making a selection
+advances the workflow, and simply touching outside the popup dismisses it.
+
+
+
+
+
Toasts
+
+
+
+
+
+
+
+
Toasts provide lightweight feedback about an operation in a small popup. For example, navigating
+away from an email before you send it triggers a "Draft saved" toast to let you know that you can
+continue editing later. Toasts automatically disappear after a timeout.
Grid lists are an alternative to standard list views. They are best suited for showing data sets
-that represent themselves through images. In contrast to simple lists, grid lists may scroll either
-vertically or horizontally.
-
-
-
-
Generic Grids
-
-
-
The items in a grid list are arranged in two dimensions, one of which is fixed when scrolling
-content. The scrolling direction dictates the ordering of the items within the grid list. Since the
-scrolling direction is not deterministic, make it easy for the user to determine the orientation by
-cutting off grid items to communicate where the overflow is located.
-
Avoid creating grid lists that scroll in two dimensions.
-
-
-
-
-
-
-
-
-
-
-
Vertical scrolling
-
Vertically scrolling grid list items are sorted in traditional western reading direction:
-left-to-right and top-down. When displaying the list, cut off the items in the bottom row to
-communicate that the user can scroll the list down to show additional items. Be sure to retain this
-scheme when the user rotates the screen.
-
-
-
-
-
-
-
-
-
-
-
-
-
Horizontal scrolling
-
Horizontally scrolling lists fix the vertical axis of the item grid. Compared to vertically
-scrolling lists, the sorting changes slightly to a top-down and left-to-right arrangement. Employ
-the same technique of cutting off the items in the rightmost column to indicate the scrolling
-direction.
-
Don't use scrolling tabs as a means to switch views in conjunction with horizontally scrolling grid
-lists, because the horizontal gesture for view and content navigation will conflict. If you show
-scrolling tabs for view navigation together with a grid list, use vertical grid scrolling for list
-navigation.
-
-
-
-
-
-
Grid List with Labels
-
-
Use labels to display additional contextual information for your grid list items.
-
-
-
-
-
-
-
-
-
-
-
Style
-
Use semi-transparent panels on top of the grid list items to display your labels. This allows you to
-control the contrast and ensures legibility of the labels while letting the content "shine through".
Grid lists are an alternative to standard list views. They are best suited for showing data sets
+that represent themselves through images. In contrast to simple lists, grid lists may scroll either
+vertically or horizontally.
+
+
+
+
Generic Grids
+
+
+
The items in a grid list are arranged in two dimensions, one of which is fixed when scrolling
+content. The scrolling direction dictates the ordering of the items within the grid list. Since the
+scrolling direction is not deterministic, make it easy for the user to determine the orientation by
+cutting off grid items to communicate where the overflow is located.
+
Avoid creating grid lists that scroll in two dimensions.
+
+
+
+
+
+
+
+
+
+
+
Vertical scrolling
+
Vertically scrolling grid list items are sorted in traditional western reading direction:
+left-to-right and top-down. When displaying the list, cut off the items in the bottom row to
+communicate that the user can scroll the list down to show additional items. Be sure to retain this
+scheme when the user rotates the screen.
+
+
+
+
+
+
+
+
+
+
+
+
+
Horizontal scrolling
+
Horizontally scrolling lists fix the vertical axis of the item grid. Compared to vertically
+scrolling lists, the sorting changes slightly to a top-down and left-to-right arrangement. Employ
+the same technique of cutting off the items in the rightmost column to indicate the scrolling
+direction.
+
Don't use scrolling tabs as a means to switch views in conjunction with horizontally scrolling grid
+lists, because the horizontal gesture for view and content navigation will conflict. If you show
+scrolling tabs for view navigation together with a grid list, use vertical grid scrolling for list
+navigation.
+
+
+
+
+
+
Grid List with Labels
+
+
Use labels to display additional contextual information for your grid list items.
+
+
+
+
+
+
+
+
+
+
+
Style
+
Use semi-transparent panels on top of the grid list items to display your labels. This allows you to
+control the contrast and ensures legibility of the labels while letting the content "shine through".
Lists present multiple line items in a vertical arrangement. They can be used for data selection as
-well as drilldown navigation.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Section Divider
-
Use section dividers to organize the content of your list into groups and facilitate scanning.
-
-
-
Line Items
-
List items can accommodate a wide range of data types in different arrangements, including
- simple single-line items, multi-line items, and custom items with icons, checkboxes, and action
- buttons.
Lists present multiple line items in a vertical arrangement. They can be used for data selection as
+well as drilldown navigation.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Section Divider
+
Use section dividers to organize the content of your list into groups and facilitate scanning.
+
+
+
Line Items
+
List items can accommodate a wide range of data types in different arrangements, including
+ simple single-line items, multi-line items, and custom items with icons, checkboxes, and action
+ buttons.
Pickers provide a simple way to select a single value from a set. In addition to touching the
-up/down arrow buttons, it's possible to set the desired value from the keyboard or via a swipe
-gesture.
-
-
-
-
-
-
-
-
-
-
-
Space considerations
-
Pickers can be used inline on a form, but their relatively large footprint is best suited for
-display in a dialog. For inline display, consider using more compact controls such as text fields or
-spinners.
-
-
-
-
-
Date and time pickers
-
-
Android provides these as ready-to-use dialogs. Each picker is a dialog with a set of controls for
-entering the parts of the date (month, day, year) or time (hour, minute, AM/PM). Using these in your
-app helps ensure that a user's specification of a data or time input is valid and formatted
-correctly. The format of a time and date picker adjusts automatically to the locale.
Pickers provide a simple way to select a single value from a set. In addition to touching the
+up/down arrow buttons, it's possible to set the desired value from the keyboard or via a swipe
+gesture.
+
+
+
+
+
+
+
+
+
+
+
Space considerations
+
Pickers can be used inline on a form, but their relatively large footprint is best suited for
+display in a dialog. For inline display, consider using more compact controls such as text fields or
+spinners.
+
+
+
+
+
Date and time pickers
+
+
Android provides these as ready-to-use dialogs. Each picker is a dialog with a set of controls for
+entering the parts of the date (month, day, year) or time (hour, minute, AM/PM). Using these in your
+app helps ensure that a user's specification of a data or time input is valid and formatted
+correctly. The format of a time and date picker adjusts automatically to the locale.
When an operation of interest to the user is taking place over a relatively long period of time,
-provide visual feedback that it's still happening and in the process of being completed.
-
Progress
-
-
If you know the percentage of the operation that has been completed, use a determinate progress bar
-to give the user a sense of how much longer it will take.
-
-
-
-
The progress bar should always travel from 0% to 100% completion. Avoid setting the bar to a lower
-value than a previous value, or using the same progress bar to represent the progress of multiple
-events, since doing so makes the display meaningless. If you're not sure how long a particular
-operation will take, use an indeterminate progress indicator.
-
-
-
-
-
- Progress bar in Holo Dark and Holo Light.
-
-
-
Activity
-
-
If you don't know how much longer an operation will continue, use an indeterminate progress
-indicator. There are two styles available: a flat bar and a circle. Use the one that best fits the
-available space.
-
-
-
-
-
-
-
-
-
-
-
-
Activity bar (shown with the Holo Dark theme)
-
-
-An indeterminate activity bar is used at the start of an application download because Google Play hasn't
-been able to contact the server yet, and it's not possible to determine how long it will take for
-the download to begin.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Activity circle (shown with the Holo Light theme)
-
-
-An indeterminate activity circle is used in the Gmail application when a message is being
-loaded because it's not possible to determine how long it will take to download the email.
-
-
-
-
-
-
-
-
-
You should only use one activity indicator on screen per activity, and it should appropriately sized
-for the surrounding context. For example, the largest activity circle works well when displayed in a
-blank content area, but not in a smaller dialog box.
When an operation of interest to the user is taking place over a relatively long period of time,
+provide visual feedback that it's still happening and in the process of being completed.
+
Progress
+
+
If you know the percentage of the operation that has been completed, use a determinate progress bar
+to give the user a sense of how much longer it will take.
+
+
+
+
The progress bar should always travel from 0% to 100% completion. Avoid setting the bar to a lower
+value than a previous value, or using the same progress bar to represent the progress of multiple
+events, since doing so makes the display meaningless. If you're not sure how long a particular
+operation will take, use an indeterminate progress indicator.
+
+
+
+
+
+ Progress bar in Holo Dark and Holo Light.
+
+
+
Activity
+
+
If you don't know how much longer an operation will continue, use an indeterminate progress
+indicator. There are two styles available: a flat bar and a circle. Use the one that best fits the
+available space.
+
+
+
+
+
+
+
+
+
+
+
+
Activity bar (shown with the Holo Dark theme)
+
+
+An indeterminate activity bar is used at the start of an application download because Google Play hasn't
+been able to contact the server yet, and it's not possible to determine how long it will take for
+the download to begin.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Activity circle (shown with the Holo Light theme)
+
+
+An indeterminate activity circle is used in the Gmail application when a message is being
+loaded because it's not possible to determine how long it will take to download the email.
+
+
+
+
+
+
+
+
+
You should only use one activity indicator on screen per activity, and it should appropriately sized
+for the surrounding context. For example, the largest activity circle works well when displayed in a
+blank content area, but not in a smaller dialog box.
Scrolling allows the user to navigate to content in the overflow using a swipe gesture. The
-scrolling speed is proportional to the speed of the gesture.
-
Scroll Indicator
-
-
Appears during scrolling to indicate what portion of the content is currently in view.
-
-
-
-
-
-
-
-
-
Index Scrolling
-
-
In addition to traditional scrolling, a long alphabetical list can also offer index scrolling: a way
-to quickly navigate to the items that begin with a particular letter. With index scrolling, a scroll
-indicator appears even when the user isn't scrolling. Touching or dragging it causes the current
-letter to pop up in a prominent way.
Scrolling allows the user to navigate to content in the overflow using a swipe gesture. The
+scrolling speed is proportional to the speed of the gesture.
+
Scroll Indicator
+
+
Appears during scrolling to indicate what portion of the content is currently in view.
+
+
+
+
+
+
+
+
+
Index Scrolling
+
+
In addition to traditional scrolling, a long alphabetical list can also offer index scrolling: a way
+to quickly navigate to the items that begin with a particular letter. With index scrolling, a scroll
+indicator appears even when the user isn't scrolling. Touching or dragging it causes the current
+letter to pop up in a prominent way.
Interactive sliders make it possible to select a value from a continuous or discrete range of values
-by moving the slider thumb. The smallest value is to the left, the largest to the right. The
-interactive nature of the slider makes it a great choice for settings that reflect intensity levels,
-such as volume, brightness, or color saturation.
-
-
-
-
-
-
-
-
-
-
-
-
Example
-
Interactive slider to set the ringer volume. The value can either be set through the hardware volume controls or interactively via a gesture.
Interactive sliders make it possible to select a value from a continuous or discrete range of values
+by moving the slider thumb. The smallest value is to the left, the largest to the right. The
+interactive nature of the slider makes it a great choice for settings that reflect intensity levels,
+such as volume, brightness, or color saturation.
+
+
+
+
+
+
+
+
+
+
+
+
Example
+
Interactive slider to set the ringer volume. The value can either be set through the hardware volume controls or interactively via a gesture.
Spinners provide a quick way to select one value from a set. In the default state, a spinner shows
-its currently selected value. Touching the spinner displays a dropdown menu with all other available
-values, from which the user can select a new one.
-
-
-
-
-
-
-
-
Spinners in forms
-
Spinners are useful for data picking in forms. They are compact and integrate nicely with other
-components. Use spinners in forms for both simple data input and in combination with other input
-fields. For example, a text field might let you edit an email address for a contact, while its
-associated spinner allows you to select whether it's a Home or Work address.
-
-
-
-
-
-
-
Spinners in action bars
-
Use spinners in action bars to switch views. For example, Gmail uses a spinner to permit switching
-between accounts or commonly used labels. Spinners are useful when changing the view is important to
-your app, but not necessarily a frequent occurrence. In cases where view switching is frequent, use
-tabs.
-
-
-
-
-
-
- Spinners in the Holo Dark and Holo Light themes, in various states.
-
Spinners provide a quick way to select one value from a set. In the default state, a spinner shows
+its currently selected value. Touching the spinner displays a dropdown menu with all other available
+values, from which the user can select a new one.
+
+
+
+
+
+
+
+
Spinners in forms
+
Spinners are useful for data picking in forms. They are compact and integrate nicely with other
+components. Use spinners in forms for both simple data input and in combination with other input
+fields. For example, a text field might let you edit an email address for a contact, while its
+associated spinner allows you to select whether it's a Home or Work address.
+
+
+
+
+
+
+
Spinners in action bars
+
Use spinners in action bars to switch views. For example, Gmail uses a spinner to permit switching
+between accounts or commonly used labels. Spinners are useful when changing the view is important to
+your app, but not necessarily a frequent occurrence. In cases where view switching is frequent, use
+tabs.
+
+
+
+
+
+
+ Spinners in the Holo Dark and Holo Light themes, in various states.
+
Switches allow the user to select options. There are three kinds of switches: checkboxes, radio
-buttons, and on/off switches.
-
Checkboxes
-
-
Checkboxes allow the user to select multiple options from a set. Avoid using a single checkbox to
-turn an option off or on. Instead, use an on/off switch.
-
-
-
-
-
-
Radio Buttons
-
-
Radio buttons allow the user to select one option from a set. Use radio buttons for exclusive
-selection if you think that the user needs to see all available options side-by-side. Otherwise,
-consider a spinner, which uses less space.
-
-
-
-
-
-
On/off Switches
-
-
On/off switches toggle the state of a single settings option.
Switches allow the user to select options. There are three kinds of switches: checkboxes, radio
+buttons, and on/off switches.
+
Checkboxes
+
+
Checkboxes allow the user to select multiple options from a set. Avoid using a single checkbox to
+turn an option off or on. Instead, use an on/off switch.
+
+
+
+
+
+
Radio Buttons
+
+
Radio buttons allow the user to select one option from a set. Use radio buttons for exclusive
+selection if you think that the user needs to see all available options side-by-side. Otherwise,
+consider a spinner, which uses less space.
+
+
+
+
+
+
On/off Switches
+
+
On/off switches toggle the state of a single settings option.
Tabs in the action bar make it easy to explore and switch between different views or functional
-aspects of your app, or to browse categorized data sets.
-
-
-
Scrollable Tabs
-
-
-
-
-
-
Scrolling tab controls can contain a larger number of items than a standard tab control. To navigate
-to the next/previous view, swipe left or right.
-
-
-
-
-
-
- Scrolling tabs on Google Play.
-
-
-
-
-
-
-
-
Fixed Tabs
-
-
-
Fixed tabs display all items concurrently. To navigate to a different view, touch the tab.
-
-
-
- Tabs in Holo Dark & Light.
-
-
-
-
- Tabs in the YouTube app.
-
-
-
-
-
Stacked Tabs
-
-
-
If view navigation is essential to your app, you can break out tabs into a separate action bar. This
-permits fast view switching even on narrower screens.
Tabs in the action bar make it easy to explore and switch between different views or functional
+aspects of your app, or to browse categorized data sets.
+
+
+
Scrollable Tabs
+
+
+
+
+
+
Scrolling tab controls can contain a larger number of items than a standard tab control. To navigate
+to the next/previous view, swipe left or right.
+
+
+
+
+
+
+ Scrolling tabs in Google Play.
+
+
+
+
+
+
+
+
Fixed Tabs
+
+
+
Fixed tabs display all items concurrently. To navigate to a different view, touch the tab.
+
+
+
+ Tabs in Holo Dark & Light.
+
+
+
+
+ Tabs in the YouTube app.
+
+
+
+
+
Stacked Tabs
+
+
+
If view navigation is essential to your app, you can break out tabs into a separate action bar. This
+permits fast view switching even on narrower screens.
Text fields allow the user to type text into your app. They can be either single line or multi-line.
-Touching a text field places the cursor and automatically displays the keyboard. In addition to
-typing, text fields allow for a variety of other activities, such as text selection (cut, copy,
-paste) and data lookup via auto-completion.
-
-
-
-
-
-
-
-
-
-
-
Single line and multi line
-
Single-line fields automatically scroll their content to the left as the text input cursor reaches
-the right edge of the input field. Multi-line text fields automatically break to a new line for
-overflow text and scroll vertically when the cursor reaches the lower edge.
-
-
-
-
-
-
-
Text field types
-
Text fields can have different types, such as number, message, or email address. The type determines
-what kind of characters are allowed inside the field, and may prompt the virtual keyboard to
-optimize its layout for frequently used characters.
-
-
-
-
-
Auto-complete text fields
-
Use auto-complete text fields to present real-time completions or search results in popups, so users
-can enter information more accurately and efficiently.
-
-
-
-
-
Text Selection
-
-
Users can select any word in a text field with a long press. This action triggers a text selection
-mode that facilitates extending the selection or choosing an action to perform on the selected text.
-Selection mode includes:
-
-
-
-
-
-
-
-
-
-
-
-
Contextual action bar
-
A contextual action bar (CAB) displays the actions available to perform on the selection:
- typically cut, copy, and paste, but apps can insert additional commands as needed.
-
-
-
Selection handles
-
Selection handles can be dragged to select more or less text while remaining in selection mode.
Text fields allow the user to type text into your app. They can be either single line or multi-line.
+Touching a text field places the cursor and automatically displays the keyboard. In addition to
+typing, text fields allow for a variety of other activities, such as text selection (cut, copy,
+paste) and data lookup via auto-completion.
+
+
+
+
+
+
+
+
+
+
+
Single line and multi line
+
Single-line fields automatically scroll their content to the left as the text input cursor reaches
+the right edge of the input field. Multi-line text fields automatically break to a new line for
+overflow text and scroll vertically when the cursor reaches the lower edge.
+
+
+
+
+
+
+
Text field types
+
Text fields can have different types, such as number, message, or email address. The type determines
+what kind of characters are allowed inside the field, and may prompt the virtual keyboard to
+optimize its layout for frequently used characters.
+
+
+
+
+
Auto-complete text fields
+
Use auto-complete text fields to present real-time completions or search results in popups, so users
+can enter information more accurately and efficiently.
+
+
+
+
+
Text Selection
+
+
Users can select any word in a text field with a long press. This action triggers a text selection
+mode that facilitates extending the selection or choosing an action to perform on the selected text.
+Selection mode includes:
+
+
+
+
+
+
+
+
+
+
+
+
Contextual action bar
+
A contextual action bar (CAB) displays the actions available to perform on the selection:
+ typically cut, copy, and paste, but apps can insert additional commands as needed.
+
+
+
Selection handles
+
Selection handles can be dragged to select more or less text while remaining in selection mode.
+
+
+
+
+
diff --git a/docs/html/design/design_toc.cs b/docs/html/design/design_toc.cs
new file mode 100644
index 0000000000000..19b58d9796659
--- /dev/null
+++ b/docs/html/design/design_toc.cs
@@ -0,0 +1,69 @@
+
Want everything? We've bundled all the downloads available on Android Design into a single ZIP file.
-You can also download individual files listed below.
-
You may use these materials without restriction in your apps and to develop your apps.
Drag and drop your way to beautifully designed Ice Cream Sandwich apps. The stencils feature the
-rich typography, colors, interactive controls, and icons found throughout Android 4.0, along with
-phone and tablet outlines to frame your creations. Source files for icons and controls are also
-available.
Action bar icons are graphic buttons that represent the most important actions people can take
-within your app. More on Action Bar Iconography
-
The download package includes icons that are scaled for various screen densities and suitable for
-use with the Holo Light and Holo Dark themes. The package also includes unstyled icons that you can
-modify to match your theme, plus source files.
Blue is the standard accent color in Android's color palette. Each color has a corresponding darker
-shade that can be used as a complement when needed.
Want everything? We've bundled all the downloads available on Android Design into a single ZIP file.
+You can also download individual files listed below.
+
You may use these materials without restriction in your apps and to develop your apps.
Drag and drop your way to beautifully designed Ice Cream Sandwich apps. The stencils feature the
+rich typography, colors, interactive controls, and icons found throughout Android 4.0, along with
+phone and tablet outlines to frame your creations. Source files for icons and controls are also
+available.
Action bar icons are graphic buttons that represent the most important actions people can take
+within your app. More on Action Bar Iconography
+
The download package includes icons that are scaled for various screen densities and suitable for
+use with the Holo Light and Holo Dark themes. The package also includes unstyled icons that you can
+modify to match your theme, plus source files.
Blue is the standard accent color in Android's color palette. Each color has a corresponding darker
+shade that can be used as a complement when needed.
Ice Cream Sandwich (Android 4.0) marks a major milestone for Android design. We touched nearly every
-pixel of the system as we expanded the new design approaches introduced in Honeycomb tablets to all
-types of mobile devices. Starting with the most basic elements, we introduced a new font, Roboto,
-designed for high-resolution displays. Other big changes include framework-level action bars on
-phones and support for new phones without physical buttons.
-
We focused the design work with three overarching goals for our core apps and the system at large.
-As you design apps to work with Android, consider these goals:
-
-
-
-
-
-
-
Enchant me
-
Beauty is more than skin deep. Android apps are sleek and aesthetically pleasing on multiple levels.
-Transitions are fast and clear; layout and typography are crisp and meaningful. App icons are works
-of art in their own right. Just like a well-made tool, your app should strive to combine beauty,
-simplicity and purpose to create a magical experience that is effortless and powerful.
-
-
-
-
-
Simplify my life
-
Android apps make life easier and are easy to understand. When people use your app for the first
-time, they should intuitively grasp the most important features. The design work doesn't stop at the
-first use, though. Android apps remove ongoing chores like file management and syncing. Simple tasks
-never require complex procedures, and complex tasks are tailored to the human hand and mind. People
-of all ages and cultures feel firmly in control, and are never overwhelmed by too many choices or
-irrelevant flash.
-
-
-
-
-
Make me amazing
-
It's not enough to make an app that is easy to use. Android apps empower people to try new things
-and to use apps in inventive new ways. Android lets people combine applications into new workflows
-through multitasking, notifications, and sharing across apps. At the same time, your app should feel
-personal, giving people access to superb technology with clarity and grace.
Ice Cream Sandwich (Android 4.0) marks a major milestone for Android design. We touched nearly every
+pixel of the system as we expanded the new design approaches introduced in Honeycomb tablets to all
+types of mobile devices. Starting with the most basic elements, we introduced a new font, Roboto,
+designed for high-resolution displays. Other big changes include framework-level action bars on
+phones and support for new phones without physical buttons.
+
We focused the design work with three overarching goals for our core apps and the system at large.
+As you design apps to work with Android, consider these goals:
+
+
+
+
+
+
+
Enchant me
+
Beauty is more than skin deep. Android apps are sleek and aesthetically pleasing on multiple levels.
+Transitions are fast and clear; layout and typography are crisp and meaningful. App icons are works
+of art in their own right. Just like a well-made tool, your app should strive to combine beauty,
+simplicity and purpose to create a magical experience that is effortless and powerful.
+
+
+
+
+
Simplify my life
+
Android apps make life easier and are easy to understand. When people use your app for the first
+time, they should intuitively grasp the most important features. The design work doesn't stop at the
+first use, though. Android apps remove ongoing chores like file management and syncing. Simple tasks
+never require complex procedures, and complex tasks are tailored to the human hand and mind. People
+of all ages and cultures feel firmly in control, and are never overwhelmed by too many choices or
+irrelevant flash.
+
+
+
+
+
Make me amazing
+
It's not enough to make an app that is easy to use. Android apps empower people to try new things
+and to use apps in inventive new ways. Android lets people combine applications into new workflows
+through multitasking, notifications, and sharing across apps. At the same time, your app should feel
+personal, giving people access to superb technology with clarity and grace.
These design principles were developed by and for the Android User Experience Team to keep users'
-best interests in mind. Consider them as you apply your own creativity and design thinking. Deviate
-with purpose.
-
-
Enchant Me
-
-
-
-
-
Delight me in surprising ways
-
A beautiful surface, a carefully-placed animation, or a well-timed sound effect is a joy to
-experience. Subtle effects contribute to a feeling of effortlessness and a sense that a powerful
-force is at hand.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Real objects are more fun than buttons and menus
-
Allow people to directly touch and manipulate objects in your app. It reduces the cognitive effort
-needed to perform a task while making it more emotionally satisfying.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Let me make it mine
-
People love to add personal touches because it helps them feel at home and in control. Provide
-sensible, beautiful defaults, but also consider fun, optional customizations that don't hinder
-primary tasks.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Get to know me
-
Learn peoples' preferences over time. Rather than asking them to make the same choices over and
-over, place previous choices within easy reach.
-
-
-
-
-
-
-
-
-
-
Simplify My Life
-
-
-
-
-
Keep it brief
-
Use short phrases with simple words. People are likely to skip sentences if they're long.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Pictures are faster than words
-
Consider using pictures to explain ideas. They get people's attention and can be much more efficient
-than words.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Decide for me but let me have the final say
-
Take your best guess and act rather than asking first. Too many choices and decisions make people
-unhappy. Just in case you get it wrong, allow for 'undo'.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Only show what I need when I need it
-
People get overwhelmed when they see too much at once. Break tasks and information into small,
-digestible chunks. Hide options that aren't essential at the moment, and teach people as they go.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
I should always know where I am
-
Give people confidence that they know their way around. Make places in your app look distinct and
-use transitions to show relationships among screens. Provide feedback on tasks in progress.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Never lose my stuff
-
Save what people took time to create and let them access it from anywhere. Remember settings,
-personal touches, and creations across phones, tablets, and computers. It makes upgrading the
-easiest thing in the world.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
If it looks the same, it should act the same
-
Help people discern functional differences by making them visually distinct rather than subtle.
-Avoid modes, which are places that look similar but act differently on the same input.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Only interrupt me if it's important
-
Like a good personal assistant, shield people from unimportant minutiae. People want to stay
-focused, and unless it's critical and time-sensitive, an interruption can be taxing and frustrating.
-
-
-
-
-
-
-
-
-
-
Make Me Amazing
-
-
-
-
-
Give me tricks that work everywhere
-
People feel great when they figure things out for themselves. Make your app easier to learn by
-leveraging visual patterns and muscle memory from other Android apps. For example, the swipe gesture
-may be a good navigational shortcut.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
It's not my fault
-
Be gentle in how you prompt people to make corrections. They want to feel smart when they use your
-app. If something goes wrong, give clear recovery instructions but spare them the technical details.
-If you can fix it behind the scenes, even better.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Sprinkle encouragement
-
Break complex tasks into smaller steps that can be easily accomplished. Give feedback on actions,
-even if it's just a subtle glow.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Do the heavy lifting for me
-
Make novices feel like experts by enabling them to do things they never thought they could. For
-example, shortcuts that combine multiple photo effects can make amateur photographs look amazing in
-only a few steps.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Make important things fast
-
Not all actions are equal. Decide what's most important in your app and make it easy to find and
-fast to use, like the shutter button in a camera, or the pause button in a music player.
These design principles were developed by and for the Android User Experience Team to keep users'
+best interests in mind. Consider them as you apply your own creativity and design thinking. Deviate
+with purpose.
+
+
Enchant Me
+
+
+
+
+
Delight me in surprising ways
+
A beautiful surface, a carefully-placed animation, or a well-timed sound effect is a joy to
+experience. Subtle effects contribute to a feeling of effortlessness and a sense that a powerful
+force is at hand.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Real objects are more fun than buttons and menus
+
Allow people to directly touch and manipulate objects in your app. It reduces the cognitive effort
+needed to perform a task while making it more emotionally satisfying.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Let me make it mine
+
People love to add personal touches because it helps them feel at home and in control. Provide
+sensible, beautiful defaults, but also consider fun, optional customizations that don't hinder
+primary tasks.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Get to know me
+
Learn peoples' preferences over time. Rather than asking them to make the same choices over and
+over, place previous choices within easy reach.
+
+
+
+
+
+
+
+
+
+
Simplify My Life
+
+
+
+
+
Keep it brief
+
Use short phrases with simple words. People are likely to skip sentences if they're long.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Pictures are faster than words
+
Consider using pictures to explain ideas. They get people's attention and can be much more efficient
+than words.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Decide for me but let me have the final say
+
Take your best guess and act rather than asking first. Too many choices and decisions make people
+unhappy. Just in case you get it wrong, allow for 'undo'.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Only show what I need when I need it
+
People get overwhelmed when they see too much at once. Break tasks and information into small,
+digestible chunks. Hide options that aren't essential at the moment, and teach people as they go.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
I should always know where I am
+
Give people confidence that they know their way around. Make places in your app look distinct and
+use transitions to show relationships among screens. Provide feedback on tasks in progress.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Never lose my stuff
+
Save what people took time to create and let them access it from anywhere. Remember settings,
+personal touches, and creations across phones, tablets, and computers. It makes upgrading the
+easiest thing in the world.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
If it looks the same, it should act the same
+
Help people discern functional differences by making them visually distinct rather than subtle.
+Avoid modes, which are places that look similar but act differently on the same input.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Only interrupt me if it's important
+
Like a good personal assistant, shield people from unimportant minutiae. People want to stay
+focused, and unless it's critical and time-sensitive, an interruption can be taxing and frustrating.
+
+
+
+
+
+
+
+
+
+
Make Me Amazing
+
+
+
+
+
Give me tricks that work everywhere
+
People feel great when they figure things out for themselves. Make your app easier to learn by
+leveraging visual patterns and muscle memory from other Android apps. For example, the swipe gesture
+may be a good navigational shortcut.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
It's not my fault
+
Be gentle in how you prompt people to make corrections. They want to feel smart when they use your
+app. If something goes wrong, give clear recovery instructions but spare them the technical details.
+If you can fix it behind the scenes, even better.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sprinkle encouragement
+
Break complex tasks into smaller steps that can be easily accomplished. Give feedback on actions,
+even if it's just a subtle glow.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Do the heavy lifting for me
+
Make novices feel like experts by enabling them to do things they never thought they could. For
+example, shortcuts that combine multiple photo effects can make amateur photographs look amazing in
+only a few steps.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Make important things fast
+
Not all actions are equal. Decide what's most important in your app and make it easy to find and
+fast to use, like the shutter button in a camera, or the pause button in a music player.
Android's system UI provides the framework on top of which you build your app. Important aspects
-include the Home screen experience, global device navigation, and notifications.
-
Your app will play an important part in keeping the overall Android experience consistent and
-enjoyable to use. At the end of this chapter we introduce the main elements for achieving this goal
-in your app.
-
Read on for a quick overview of the most important aspects of the Android user interface.
-
-
Home, All Apps, and Recents
-
-
-
-
-
-
-
-
-
Home screen
-
Home is a customizable space that houses app shortcuts, folders and widgets. Navigate between
-different home screen panels by swiping left and right.
-
The Favorites Tray at the bottom always keeps your most important shortcuts and folders in view
-regardless of which panel is currently showing.
-
Access the entire collection of apps and widgets by touching the All Apps button at the center of
-the Favorites Tray.
-
-
-
-
-
-
-
All apps screen
-
The All Apps screen lets you browse the entire set of apps and widgets that are installed on your
-device.
-
Users can drag an app or widget icon from the All Apps screen and place it in any empty location on
-any Home screen.
-
-
-
-
-
-
-
Recents screen
-
Recents provides an efficient way of switching between recently used applications. It provides a
-clear navigation path between multiple ongoing tasks.
-
The Recents button at the right side of the navigation bar displays the apps that the user has
-interacted with most recently. They are organized in reverse chronological order with the most
-recently used app at the bottom.
-
Switch to an app by touching it. Remove an item by swiping left or right.
-
-
-
-
-
System Bars
-
-
The system bars are screen areas dedicated to the display of notifications, communication of device
-status, and device navigation. Typically the system bars are displayed concurrently with your app.
-Apps that display immersive content, such as movies or images, can temporarily hide the system bars
-to allow the user to enjoy full screen content without distraction.
-
-
-
-
-
-
-
-
Status Bar
-
Displays pending notifications on the left and status, such as time, battery level, or signal
- strength, on the right. Swipe down from the status bar to show notification details.
-
-
-
Navigation Bar
-
New for phones in Android 4.0, the navigation bar is present only on devices that don't have
- the traditional hardware keys. It houses the device navigation controls Back, Home, and
- Recents, and also displays a menu for apps written for Android 2.3 or earlier.
-
-
-
Combined Bar
-
On tablet form factors the status and navigation bars are combined into a single bar at the
- bottom of the screen.
-
-
-
-
-
-
Notifications
-
-
Notifications are brief messages that users can access at any time from the status bar. They
-provide updates, reminders, or information that's important, but not critical enough to warrant
-interrupting the user. Open the notifications drawer by swiping down on the status bar. Touching a
-notification opens the associated app. More on Notifications
-
-
-
-
-
-
-
-
-
-
-
-
Most notifications have a one-line title and a one-line message. The recommended layout for a
-notification includes two lines. If necessary, you can add a third line. Timestamps are optional.
-
Swiping a notification right or left removes it from the notification drawer.
-
-
-
-
-
-
Common App UI
-
-
-
-
-
-
-
-
-
-
-
A typical Android app consists of action bars and the app content area.
-
-
-
Main Action Bar
-
The command and control center for your app. The main action bar includes elements for
- navigating your app's hierarchy and views, and also surfaces the most important actions.
Allows users to switch between the different views that your app provides. Views typically
- consist of different arrangements of your data or different functional aspects of your app.
-
-
-
Content Area
-
The space where the content of your app is displayed.
-
-
-
Split Action Bar
-
Split action bars provide a way to distribute actions across additional bars located below
- the main action bar or at the bottom of the screen. In this example, a split action bar moves
- important actions that won't fit in the main bar to the bottom.
Android's system UI provides the framework on top of which you build your app. Important aspects
+include the Home screen experience, global device navigation, and notifications.
+
Your app will play an important part in keeping the overall Android experience consistent and
+enjoyable to use. At the end of this chapter we introduce the main elements for achieving this goal
+in your app.
+
Read on for a quick overview of the most important aspects of the Android user interface.
+
+
Home, All Apps, and Recents
+
+
+
+
+
+
+
+
+
Home screen
+
Home is a customizable space that houses app shortcuts, folders and widgets. Navigate between
+different home screen panels by swiping left and right.
+
The Favorites Tray at the bottom always keeps your most important shortcuts and folders in view
+regardless of which panel is currently showing.
+
Access the entire collection of apps and widgets by touching the All Apps button at the center of
+the Favorites Tray.
+
+
+
+
+
+
+
All apps screen
+
The All Apps screen lets you browse the entire set of apps and widgets that are installed on your
+device.
+
Users can drag an app or widget icon from the All Apps screen and place it in any empty location on
+any Home screen.
+
+
+
+
+
+
+
Recents screen
+
Recents provides an efficient way of switching between recently used applications. It provides a
+clear navigation path between multiple ongoing tasks.
+
The Recents button at the right side of the navigation bar displays the apps that the user has
+interacted with most recently. They are organized in reverse chronological order with the most
+recently used app at the bottom.
+
Switch to an app by touching it. Remove an item by swiping left or right.
+
+
+
+
+
System Bars
+
+
The system bars are screen areas dedicated to the display of notifications, communication of device
+status, and device navigation. Typically the system bars are displayed concurrently with your app.
+Apps that display immersive content, such as movies or images, can temporarily hide the system bars
+to allow the user to enjoy full screen content without distraction.
+
+
+
+
+
+
+
+
Status Bar
+
Displays pending notifications on the left and status, such as time, battery level, or signal
+ strength, on the right. Swipe down from the status bar to show notification details.
+
+
+
Navigation Bar
+
New for phones in Android 4.0, the navigation bar is present only on devices that don't have
+ the traditional hardware keys. It houses the device navigation controls Back, Home, and
+ Recents, and also displays a menu for apps written for Android 2.3 or earlier.
+
+
+
Combined Bar
+
On tablet form factors the status and navigation bars are combined into a single bar at the
+ bottom of the screen.
+
+
+
+
+
+
Notifications
+
+
Notifications are brief messages that users can access at any time from the status bar. They
+provide updates, reminders, or information that's important, but not critical enough to warrant
+interrupting the user. Open the notifications drawer by swiping down on the status bar. Touching a
+notification opens the associated app. More on Notifications
+
+
+
+
+
+
+
+
+
+
+
+
Most notifications have a one-line title and a one-line message. The recommended layout for a
+notification includes two lines. If necessary, you can add a third line. Timestamps are optional.
+
Swiping a notification right or left removes it from the notification drawer.
+
+
+
+
+
+
Common App UI
+
+
+
+
+
+
+
+
+
+
+
A typical Android app consists of action bars and the app content area.
+
+
+
Main Action Bar
+
The command and control center for your app. The main action bar includes elements for
+ navigating your app's hierarchy and views, and also surfaces the most important actions.
Allows users to switch between the different views that your app provides. Views typically
+ consist of different arrangements of your data or different functional aspects of your app.
+
+
+
Content Area
+
The space where the content of your app is displayed.
+
+
+
Split Action Bar
+
Split action bars provide a way to distribute actions across additional bars located below
+ the main action bar or at the bottom of the screen. In this example, a split action bar moves
+ important actions that won't fit in the main bar to the bottom.
diff --git a/docs/html/design/static/content/action_bar_basics.png b/docs/html/design/media/action_bar_basics.png
similarity index 100%
rename from docs/html/design/static/content/action_bar_basics.png
rename to docs/html/design/media/action_bar_basics.png
diff --git a/docs/html/design/static/content/action_bar_cab.png b/docs/html/design/media/action_bar_cab.png
similarity index 100%
rename from docs/html/design/static/content/action_bar_cab.png
rename to docs/html/design/media/action_bar_cab.png
diff --git a/docs/html/design/static/content/action_bar_pattern_action_icons.png b/docs/html/design/media/action_bar_pattern_action_icons.png
similarity index 100%
rename from docs/html/design/static/content/action_bar_pattern_action_icons.png
rename to docs/html/design/media/action_bar_pattern_action_icons.png
diff --git a/docs/html/design/static/content/action_bar_pattern_considerations.png b/docs/html/design/media/action_bar_pattern_considerations.png
similarity index 100%
rename from docs/html/design/static/content/action_bar_pattern_considerations.png
rename to docs/html/design/media/action_bar_pattern_considerations.png
diff --git a/docs/html/design/static/content/action_bar_pattern_default_tabs.png b/docs/html/design/media/action_bar_pattern_default_tabs.png
similarity index 100%
rename from docs/html/design/static/content/action_bar_pattern_default_tabs.png
rename to docs/html/design/media/action_bar_pattern_default_tabs.png
diff --git a/docs/html/design/static/content/action_bar_pattern_overflow.png b/docs/html/design/media/action_bar_pattern_overflow.png
similarity index 100%
rename from docs/html/design/static/content/action_bar_pattern_overflow.png
rename to docs/html/design/media/action_bar_pattern_overflow.png
diff --git a/docs/html/design/static/content/action_bar_pattern_overview.png b/docs/html/design/media/action_bar_pattern_overview.png
similarity index 100%
rename from docs/html/design/static/content/action_bar_pattern_overview.png
rename to docs/html/design/media/action_bar_pattern_overview.png
diff --git a/docs/html/design/static/content/action_bar_pattern_rotation.png b/docs/html/design/media/action_bar_pattern_rotation.png
similarity index 100%
rename from docs/html/design/static/content/action_bar_pattern_rotation.png
rename to docs/html/design/media/action_bar_pattern_rotation.png
diff --git a/docs/html/design/static/content/action_bar_pattern_share_pack.png b/docs/html/design/media/action_bar_pattern_share_pack.png
similarity index 100%
rename from docs/html/design/static/content/action_bar_pattern_share_pack.png
rename to docs/html/design/media/action_bar_pattern_share_pack.png
diff --git a/docs/html/design/static/content/action_bar_pattern_spinner.png b/docs/html/design/media/action_bar_pattern_spinner.png
similarity index 100%
rename from docs/html/design/static/content/action_bar_pattern_spinner.png
rename to docs/html/design/media/action_bar_pattern_spinner.png
diff --git a/docs/html/design/static/content/action_bar_pattern_table.png b/docs/html/design/media/action_bar_pattern_table.png
similarity index 100%
rename from docs/html/design/static/content/action_bar_pattern_table.png
rename to docs/html/design/media/action_bar_pattern_table.png
diff --git a/docs/html/design/static/content/action_bar_pattern_up_app_icon.png b/docs/html/design/media/action_bar_pattern_up_app_icon.png
similarity index 100%
rename from docs/html/design/static/content/action_bar_pattern_up_app_icon.png
rename to docs/html/design/media/action_bar_pattern_up_app_icon.png
diff --git a/docs/html/design/static/content/app_structure_book_detail_page_flip.png b/docs/html/design/media/app_structure_book_detail_page_flip.png
similarity index 100%
rename from docs/html/design/static/content/app_structure_book_detail_page_flip.png
rename to docs/html/design/media/app_structure_book_detail_page_flip.png
diff --git a/docs/html/design/static/content/app_structure_fixedtabs.png b/docs/html/design/media/app_structure_fixedtabs.png
similarity index 100%
rename from docs/html/design/static/content/app_structure_fixedtabs.png
rename to docs/html/design/media/app_structure_fixedtabs.png
diff --git a/docs/html/design/static/content/app_structure_gallery_filmstrip.png b/docs/html/design/media/app_structure_gallery_filmstrip.png
similarity index 100%
rename from docs/html/design/static/content/app_structure_gallery_filmstrip.png
rename to docs/html/design/media/app_structure_gallery_filmstrip.png
diff --git a/docs/html/design/static/content/app_structure_gmail.png b/docs/html/design/media/app_structure_gmail.png
similarity index 100%
rename from docs/html/design/static/content/app_structure_gmail.png
rename to docs/html/design/media/app_structure_gmail.png
diff --git a/docs/html/design/static/content/app_structure_gmail_swipe.png b/docs/html/design/media/app_structure_gmail_swipe.png
similarity index 100%
rename from docs/html/design/static/content/app_structure_gmail_swipe.png
rename to docs/html/design/media/app_structure_gmail_swipe.png
diff --git a/docs/html/design/static/content/app_structure_market.png b/docs/html/design/media/app_structure_market.png
similarity index 100%
rename from docs/html/design/static/content/app_structure_market.png
rename to docs/html/design/media/app_structure_market.png
diff --git a/docs/html/design/static/content/app_structure_music_lndscp.png b/docs/html/design/media/app_structure_music_lndscp.png
similarity index 100%
rename from docs/html/design/static/content/app_structure_music_lndscp.png
rename to docs/html/design/media/app_structure_music_lndscp.png
diff --git a/docs/html/design/static/content/app_structure_overview.png b/docs/html/design/media/app_structure_overview.png
similarity index 100%
rename from docs/html/design/static/content/app_structure_overview.png
rename to docs/html/design/media/app_structure_overview.png
diff --git a/docs/html/design/static/content/app_structure_people_detail.png b/docs/html/design/media/app_structure_people_detail.png
similarity index 100%
rename from docs/html/design/static/content/app_structure_people_detail.png
rename to docs/html/design/media/app_structure_people_detail.png
diff --git a/docs/html/design/static/content/app_structure_scrolltabs.png b/docs/html/design/media/app_structure_scrolltabs.png
similarity index 100%
rename from docs/html/design/static/content/app_structure_scrolltabs.png
rename to docs/html/design/media/app_structure_scrolltabs.png
diff --git a/docs/html/design/static/content/app_structure_shortcut_on_item.png b/docs/html/design/media/app_structure_shortcut_on_item.png
similarity index 100%
rename from docs/html/design/static/content/app_structure_shortcut_on_item.png
rename to docs/html/design/media/app_structure_shortcut_on_item.png
diff --git a/docs/html/design/static/content/building_blocks_landing.png b/docs/html/design/media/building_blocks_landing.png
similarity index 100%
rename from docs/html/design/static/content/building_blocks_landing.png
rename to docs/html/design/media/building_blocks_landing.png
diff --git a/docs/html/design/static/content/buttons_basic.png b/docs/html/design/media/buttons_basic.png
similarity index 100%
rename from docs/html/design/static/content/buttons_basic.png
rename to docs/html/design/media/buttons_basic.png
diff --git a/docs/html/design/static/content/buttons_borderless.png b/docs/html/design/media/buttons_borderless.png
similarity index 100%
rename from docs/html/design/static/content/buttons_borderless.png
rename to docs/html/design/media/buttons_borderless.png
diff --git a/docs/html/design/static/content/buttons_default_small.png b/docs/html/design/media/buttons_default_small.png
similarity index 100%
rename from docs/html/design/static/content/buttons_default_small.png
rename to docs/html/design/media/buttons_default_small.png
diff --git a/docs/html/design/static/content/color_spectrum.png b/docs/html/design/media/color_spectrum.png
similarity index 100%
rename from docs/html/design/static/content/color_spectrum.png
rename to docs/html/design/media/color_spectrum.png
diff --git a/docs/html/design/static/content/compatibility_legacy_apps.png b/docs/html/design/media/compatibility_legacy_apps.png
similarity index 100%
rename from docs/html/design/static/content/compatibility_legacy_apps.png
rename to docs/html/design/media/compatibility_legacy_apps.png
diff --git a/docs/html/design/static/content/compatibility_physical_buttons.png b/docs/html/design/media/compatibility_physical_buttons.png
similarity index 100%
rename from docs/html/design/static/content/compatibility_physical_buttons.png
rename to docs/html/design/media/compatibility_physical_buttons.png
diff --git a/docs/html/design/static/content/compatibility_virtual_nav.png b/docs/html/design/media/compatibility_virtual_nav.png
similarity index 100%
rename from docs/html/design/static/content/compatibility_virtual_nav.png
rename to docs/html/design/media/compatibility_virtual_nav.png
diff --git a/docs/html/design/static/content/creative_vision_main.png b/docs/html/design/media/creative_vision_main.png
similarity index 100%
rename from docs/html/design/static/content/creative_vision_main.png
rename to docs/html/design/media/creative_vision_main.png
diff --git a/docs/html/design/static/content/design_elements_landing.png b/docs/html/design/media/design_elements_landing.png
similarity index 100%
rename from docs/html/design/static/content/design_elements_landing.png
rename to docs/html/design/media/design_elements_landing.png
diff --git a/docs/html/design/static/content/devices_displays_density.png b/docs/html/design/media/devices_displays_density.png
similarity index 100%
rename from docs/html/design/static/content/devices_displays_density.png
rename to docs/html/design/media/devices_displays_density.png
diff --git a/docs/html/design/static/content/devices_displays_main.png b/docs/html/design/media/devices_displays_main.png
similarity index 100%
rename from docs/html/design/static/content/devices_displays_main.png
rename to docs/html/design/media/devices_displays_main.png
diff --git a/docs/html/design/static/content/dialogs_examples.png b/docs/html/design/media/dialogs_examples.png
similarity index 100%
rename from docs/html/design/static/content/dialogs_examples.png
rename to docs/html/design/media/dialogs_examples.png
diff --git a/docs/html/design/static/content/dialogs_main.png b/docs/html/design/media/dialogs_main.png
similarity index 100%
rename from docs/html/design/static/content/dialogs_main.png
rename to docs/html/design/media/dialogs_main.png
diff --git a/docs/html/design/static/content/dialogs_popups_example.png b/docs/html/design/media/dialogs_popups_example.png
similarity index 100%
rename from docs/html/design/static/content/dialogs_popups_example.png
rename to docs/html/design/media/dialogs_popups_example.png
diff --git a/docs/html/design/static/content/dialogs_toasts.png b/docs/html/design/media/dialogs_toasts.png
similarity index 100%
rename from docs/html/design/static/content/dialogs_toasts.png
rename to docs/html/design/media/dialogs_toasts.png
diff --git a/docs/html/design/static/content/dialogs_w_no_title.png b/docs/html/design/media/dialogs_w_no_title.png
similarity index 100%
rename from docs/html/design/static/content/dialogs_w_no_title.png
rename to docs/html/design/media/dialogs_w_no_title.png
diff --git a/docs/html/design/static/content/dialogs_w_title.png b/docs/html/design/media/dialogs_w_title.png
similarity index 100%
rename from docs/html/design/static/content/dialogs_w_title.png
rename to docs/html/design/media/dialogs_w_title.png
diff --git a/docs/html/design/static/content/downloads_color_swatches.png b/docs/html/design/media/downloads_color_swatches.png
similarity index 100%
rename from docs/html/design/static/content/downloads_color_swatches.png
rename to docs/html/design/media/downloads_color_swatches.png
diff --git a/docs/html/design/static/content/downloads_roboto_specimen_preview.png b/docs/html/design/media/downloads_roboto_specimen_preview.png
similarity index 100%
rename from docs/html/design/static/content/downloads_roboto_specimen_preview.png
rename to docs/html/design/media/downloads_roboto_specimen_preview.png
diff --git a/docs/html/design/static/content/downloads_stencils.png b/docs/html/design/media/downloads_stencils.png
similarity index 100%
rename from docs/html/design/static/content/downloads_stencils.png
rename to docs/html/design/media/downloads_stencils.png
diff --git a/docs/html/design/static/content/gesture_doubletouch.png b/docs/html/design/media/gesture_doubletouch.png
similarity index 100%
rename from docs/html/design/static/content/gesture_doubletouch.png
rename to docs/html/design/media/gesture_doubletouch.png
diff --git a/docs/html/design/static/content/gesture_drag.png b/docs/html/design/media/gesture_drag.png
similarity index 100%
rename from docs/html/design/static/content/gesture_drag.png
rename to docs/html/design/media/gesture_drag.png
diff --git a/docs/html/design/static/content/gesture_longtouch.png b/docs/html/design/media/gesture_longtouch.png
similarity index 100%
rename from docs/html/design/static/content/gesture_longtouch.png
rename to docs/html/design/media/gesture_longtouch.png
diff --git a/docs/html/design/static/content/gesture_pinchclose.png b/docs/html/design/media/gesture_pinchclose.png
similarity index 100%
rename from docs/html/design/static/content/gesture_pinchclose.png
rename to docs/html/design/media/gesture_pinchclose.png
diff --git a/docs/html/design/static/content/gesture_pinchopen.png b/docs/html/design/media/gesture_pinchopen.png
similarity index 100%
rename from docs/html/design/static/content/gesture_pinchopen.png
rename to docs/html/design/media/gesture_pinchopen.png
diff --git a/docs/html/design/static/content/gesture_swipe.png b/docs/html/design/media/gesture_swipe.png
similarity index 100%
rename from docs/html/design/static/content/gesture_swipe.png
rename to docs/html/design/media/gesture_swipe.png
diff --git a/docs/html/design/static/content/gesture_touch.png b/docs/html/design/media/gesture_touch.png
similarity index 100%
rename from docs/html/design/static/content/gesture_touch.png
rename to docs/html/design/media/gesture_touch.png
diff --git a/docs/html/design/static/content/gridview_example.png b/docs/html/design/media/gridview_example.png
similarity index 100%
rename from docs/html/design/static/content/gridview_example.png
rename to docs/html/design/media/gridview_example.png
diff --git a/docs/html/design/static/content/gridview_horizontal.png b/docs/html/design/media/gridview_horizontal.png
similarity index 100%
rename from docs/html/design/static/content/gridview_horizontal.png
rename to docs/html/design/media/gridview_horizontal.png
diff --git a/docs/html/design/static/content/gridview_overview.png b/docs/html/design/media/gridview_overview.png
similarity index 100%
rename from docs/html/design/static/content/gridview_overview.png
rename to docs/html/design/media/gridview_overview.png
diff --git a/docs/html/design/static/content/gridview_style.png b/docs/html/design/media/gridview_style.png
similarity index 100%
rename from docs/html/design/static/content/gridview_style.png
rename to docs/html/design/media/gridview_style.png
diff --git a/docs/html/design/static/content/gridview_vertical.png b/docs/html/design/media/gridview_vertical.png
similarity index 100%
rename from docs/html/design/static/content/gridview_vertical.png
rename to docs/html/design/media/gridview_vertical.png
diff --git a/docs/html/design/static/content/iconography_actionbar_colors.png b/docs/html/design/media/iconography_actionbar_colors.png
similarity index 100%
rename from docs/html/design/static/content/iconography_actionbar_colors.png
rename to docs/html/design/media/iconography_actionbar_colors.png
diff --git a/docs/html/design/static/content/iconography_actionbar_focal.png b/docs/html/design/media/iconography_actionbar_focal.png
similarity index 100%
rename from docs/html/design/static/content/iconography_actionbar_focal.png
rename to docs/html/design/media/iconography_actionbar_focal.png
diff --git a/docs/html/design/static/content/iconography_actionbar_size.png b/docs/html/design/media/iconography_actionbar_size.png
similarity index 100%
rename from docs/html/design/static/content/iconography_actionbar_size.png
rename to docs/html/design/media/iconography_actionbar_size.png
diff --git a/docs/html/design/static/content/iconography_actionbar_style.png b/docs/html/design/media/iconography_actionbar_style.png
similarity index 100%
rename from docs/html/design/static/content/iconography_actionbar_style.png
rename to docs/html/design/media/iconography_actionbar_style.png
diff --git a/docs/html/design/static/content/iconography_launcher_example.png b/docs/html/design/media/iconography_launcher_example.png
similarity index 100%
rename from docs/html/design/static/content/iconography_launcher_example.png
rename to docs/html/design/media/iconography_launcher_example.png
diff --git a/docs/html/design/static/content/iconography_launcher_example2.png b/docs/html/design/media/iconography_launcher_example2.png
similarity index 100%
rename from docs/html/design/static/content/iconography_launcher_example2.png
rename to docs/html/design/media/iconography_launcher_example2.png
diff --git a/docs/html/design/static/content/iconography_launcher_focal.png b/docs/html/design/media/iconography_launcher_focal.png
similarity index 100%
rename from docs/html/design/static/content/iconography_launcher_focal.png
rename to docs/html/design/media/iconography_launcher_focal.png
diff --git a/docs/html/design/static/content/iconography_launcher_size.png b/docs/html/design/media/iconography_launcher_size.png
similarity index 100%
rename from docs/html/design/static/content/iconography_launcher_size.png
rename to docs/html/design/media/iconography_launcher_size.png
diff --git a/docs/html/design/static/content/iconography_launcher_style.png b/docs/html/design/media/iconography_launcher_style.png
similarity index 100%
rename from docs/html/design/static/content/iconography_launcher_style.png
rename to docs/html/design/media/iconography_launcher_style.png
diff --git a/docs/html/design/static/content/iconography_notification_example.png b/docs/html/design/media/iconography_notification_example.png
similarity index 100%
rename from docs/html/design/static/content/iconography_notification_example.png
rename to docs/html/design/media/iconography_notification_example.png
diff --git a/docs/html/design/static/content/iconography_notification_focal.png b/docs/html/design/media/iconography_notification_focal.png
similarity index 100%
rename from docs/html/design/static/content/iconography_notification_focal.png
rename to docs/html/design/media/iconography_notification_focal.png
diff --git a/docs/html/design/static/content/iconography_notification_size.png b/docs/html/design/media/iconography_notification_size.png
similarity index 100%
rename from docs/html/design/static/content/iconography_notification_size.png
rename to docs/html/design/media/iconography_notification_size.png
diff --git a/docs/html/design/static/content/iconography_notification_style.png b/docs/html/design/media/iconography_notification_style.png
similarity index 100%
rename from docs/html/design/static/content/iconography_notification_style.png
rename to docs/html/design/media/iconography_notification_style.png
diff --git a/docs/html/design/static/content/iconography_overview.png b/docs/html/design/media/iconography_overview.png
similarity index 100%
rename from docs/html/design/static/content/iconography_overview.png
rename to docs/html/design/media/iconography_overview.png
diff --git a/docs/html/design/static/content/iconography_small_colors.png b/docs/html/design/media/iconography_small_colors.png
similarity index 100%
rename from docs/html/design/static/content/iconography_small_colors.png
rename to docs/html/design/media/iconography_small_colors.png
diff --git a/docs/html/design/static/content/iconography_small_example.png b/docs/html/design/media/iconography_small_example.png
similarity index 100%
rename from docs/html/design/static/content/iconography_small_example.png
rename to docs/html/design/media/iconography_small_example.png
diff --git a/docs/html/design/static/content/iconography_small_focal.png b/docs/html/design/media/iconography_small_focal.png
similarity index 100%
rename from docs/html/design/static/content/iconography_small_focal.png
rename to docs/html/design/media/iconography_small_focal.png
diff --git a/docs/html/design/static/content/iconography_small_size.png b/docs/html/design/media/iconography_small_size.png
similarity index 100%
rename from docs/html/design/static/content/iconography_small_size.png
rename to docs/html/design/media/iconography_small_size.png
diff --git a/docs/html/design/static/content/iconography_small_style.png b/docs/html/design/media/iconography_small_style.png
similarity index 100%
rename from docs/html/design/static/content/iconography_small_style.png
rename to docs/html/design/media/iconography_small_style.png
diff --git a/docs/html/design/static/content/index_landing_page.png b/docs/html/design/media/index_landing_page.png
similarity index 100%
rename from docs/html/design/static/content/index_landing_page.png
rename to docs/html/design/media/index_landing_page.png
diff --git a/docs/html/design/static/content/lists_main.png b/docs/html/design/media/lists_main.png
similarity index 100%
rename from docs/html/design/static/content/lists_main.png
rename to docs/html/design/media/lists_main.png
diff --git a/docs/html/design/static/content/metrics_48.png b/docs/html/design/media/metrics_48.png
similarity index 100%
rename from docs/html/design/static/content/metrics_48.png
rename to docs/html/design/media/metrics_48.png
diff --git a/docs/html/design/static/content/metrics_closeup.png b/docs/html/design/media/metrics_closeup.png
similarity index 100%
rename from docs/html/design/static/content/metrics_closeup.png
rename to docs/html/design/media/metrics_closeup.png
diff --git a/docs/html/design/static/content/metrics_diagram.png b/docs/html/design/media/metrics_diagram.png
similarity index 100%
rename from docs/html/design/static/content/metrics_diagram.png
rename to docs/html/design/media/metrics_diagram.png
diff --git a/docs/html/design/static/content/metrics_forms.png b/docs/html/design/media/metrics_forms.png
similarity index 100%
rename from docs/html/design/static/content/metrics_forms.png
rename to docs/html/design/media/metrics_forms.png
diff --git a/docs/html/design/static/content/migrating_icons.png b/docs/html/design/media/migrating_icons.png
similarity index 100%
rename from docs/html/design/static/content/migrating_icons.png
rename to docs/html/design/media/migrating_icons.png
diff --git a/docs/html/design/static/content/migrating_ios_dialers.png b/docs/html/design/media/migrating_ios_dialers.png
similarity index 100%
rename from docs/html/design/static/content/migrating_ios_dialers.png
rename to docs/html/design/media/migrating_ios_dialers.png
diff --git a/docs/html/design/static/content/migrating_ios_galleries.png b/docs/html/design/media/migrating_ios_galleries.png
similarity index 100%
rename from docs/html/design/static/content/migrating_ios_galleries.png
rename to docs/html/design/media/migrating_ios_galleries.png
diff --git a/docs/html/design/static/content/migrating_ios_settings.png b/docs/html/design/media/migrating_ios_settings.png
similarity index 100%
rename from docs/html/design/static/content/migrating_ios_settings.png
rename to docs/html/design/media/migrating_ios_settings.png
diff --git a/docs/html/design/static/content/migrating_ui_elements.png b/docs/html/design/media/migrating_ui_elements.png
similarity index 100%
rename from docs/html/design/static/content/migrating_ui_elements.png
rename to docs/html/design/media/migrating_ui_elements.png
diff --git a/docs/html/design/static/content/misc_full_galaxynexus_blank_land_span13.png b/docs/html/design/media/misc_full_galaxynexus_blank_land_span13.png
similarity index 100%
rename from docs/html/design/static/content/misc_full_galaxynexus_blank_land_span13.png
rename to docs/html/design/media/misc_full_galaxynexus_blank_land_span13.png
diff --git a/docs/html/design/static/content/misc_full_galaxynexus_blank_port_span5.png b/docs/html/design/media/misc_full_galaxynexus_blank_port_span5.png
similarity index 100%
rename from docs/html/design/static/content/misc_full_galaxynexus_blank_port_span5.png
rename to docs/html/design/media/misc_full_galaxynexus_blank_port_span5.png
diff --git a/docs/html/design/static/content/misc_full_galaxynexus_blank_port_span9.png b/docs/html/design/media/misc_full_galaxynexus_blank_port_span9.png
similarity index 100%
rename from docs/html/design/static/content/misc_full_galaxynexus_blank_port_span9.png
rename to docs/html/design/media/misc_full_galaxynexus_blank_port_span9.png
diff --git a/docs/html/design/static/content/multipane_expand.png b/docs/html/design/media/multipane_expand.png
similarity index 100%
rename from docs/html/design/static/content/multipane_expand.png
rename to docs/html/design/media/multipane_expand.png
diff --git a/docs/html/design/static/content/multipane_show.png b/docs/html/design/media/multipane_show.png
similarity index 100%
rename from docs/html/design/static/content/multipane_show.png
rename to docs/html/design/media/multipane_show.png
diff --git a/docs/html/design/static/content/multipane_stack.png b/docs/html/design/media/multipane_stack.png
similarity index 100%
rename from docs/html/design/static/content/multipane_stack.png
rename to docs/html/design/media/multipane_stack.png
diff --git a/docs/html/design/static/content/multipane_stretch.png b/docs/html/design/media/multipane_stretch.png
similarity index 100%
rename from docs/html/design/static/content/multipane_stretch.png
rename to docs/html/design/media/multipane_stretch.png
diff --git a/docs/html/design/static/content/multipane_view_tablet.png b/docs/html/design/media/multipane_view_tablet.png
similarity index 100%
rename from docs/html/design/static/content/multipane_view_tablet.png
rename to docs/html/design/media/multipane_view_tablet.png
diff --git a/docs/html/design/static/content/multipane_views.png b/docs/html/design/media/multipane_views.png
similarity index 100%
rename from docs/html/design/static/content/multipane_views.png
rename to docs/html/design/media/multipane_views.png
diff --git a/docs/html/design/static/content/navigation_between_siblings_gmail.png b/docs/html/design/media/navigation_between_siblings_gmail.png
similarity index 100%
rename from docs/html/design/static/content/navigation_between_siblings_gmail.png
rename to docs/html/design/media/navigation_between_siblings_gmail.png
diff --git a/docs/html/design/static/content/navigation_between_siblings_market1.png b/docs/html/design/media/navigation_between_siblings_market1.png
similarity index 100%
rename from docs/html/design/static/content/navigation_between_siblings_market1.png
rename to docs/html/design/media/navigation_between_siblings_market1.png
diff --git a/docs/html/design/static/content/navigation_between_siblings_market2.png b/docs/html/design/media/navigation_between_siblings_market2.png
similarity index 100%
rename from docs/html/design/static/content/navigation_between_siblings_market2.png
rename to docs/html/design/media/navigation_between_siblings_market2.png
diff --git a/docs/html/design/static/content/navigation_from_outside_back.png b/docs/html/design/media/navigation_from_outside_back.png
similarity index 100%
rename from docs/html/design/static/content/navigation_from_outside_back.png
rename to docs/html/design/media/navigation_from_outside_back.png
diff --git a/docs/html/design/static/content/navigation_from_outside_up.png b/docs/html/design/media/navigation_from_outside_up.png
similarity index 100%
rename from docs/html/design/static/content/navigation_from_outside_up.png
rename to docs/html/design/media/navigation_from_outside_up.png
diff --git a/docs/html/design/static/content/navigation_up_vs_back_gmail.png b/docs/html/design/media/navigation_up_vs_back_gmail.png
similarity index 100%
rename from docs/html/design/static/content/navigation_up_vs_back_gmail.png
rename to docs/html/design/media/navigation_up_vs_back_gmail.png
diff --git a/docs/html/design/static/content/navigation_with_back_and_up.png b/docs/html/design/media/navigation_with_back_and_up.png
similarity index 100%
rename from docs/html/design/static/content/navigation_with_back_and_up.png
rename to docs/html/design/media/navigation_with_back_and_up.png
diff --git a/docs/html/design/static/content/notifications_dismiss.png b/docs/html/design/media/notifications_dismiss.png
similarity index 100%
rename from docs/html/design/static/content/notifications_dismiss.png
rename to docs/html/design/media/notifications_dismiss.png
diff --git a/docs/html/design/static/content/notifications_pattern_additional_fail.png b/docs/html/design/media/notifications_pattern_additional_fail.png
similarity index 100%
rename from docs/html/design/static/content/notifications_pattern_additional_fail.png
rename to docs/html/design/media/notifications_pattern_additional_fail.png
diff --git a/docs/html/design/static/content/notifications_pattern_additional_win.png b/docs/html/design/media/notifications_pattern_additional_win.png
similarity index 100%
rename from docs/html/design/static/content/notifications_pattern_additional_win.png
rename to docs/html/design/media/notifications_pattern_additional_win.png
diff --git a/docs/html/design/static/content/notifications_pattern_anatomy.png b/docs/html/design/media/notifications_pattern_anatomy.png
similarity index 100%
rename from docs/html/design/static/content/notifications_pattern_anatomy.png
rename to docs/html/design/media/notifications_pattern_anatomy.png
diff --git a/docs/html/design/static/content/notifications_pattern_dialog_toast.png b/docs/html/design/media/notifications_pattern_dialog_toast.png
similarity index 100%
rename from docs/html/design/static/content/notifications_pattern_dialog_toast.png
rename to docs/html/design/media/notifications_pattern_dialog_toast.png
diff --git a/docs/html/design/static/content/notifications_pattern_ongoing_music.png b/docs/html/design/media/notifications_pattern_ongoing_music.png
similarity index 100%
rename from docs/html/design/static/content/notifications_pattern_ongoing_music.png
rename to docs/html/design/media/notifications_pattern_ongoing_music.png
diff --git a/docs/html/design/static/content/notifications_pattern_phone_icons.png b/docs/html/design/media/notifications_pattern_phone_icons.png
similarity index 100%
rename from docs/html/design/static/content/notifications_pattern_phone_icons.png
rename to docs/html/design/media/notifications_pattern_phone_icons.png
diff --git a/docs/html/design/static/content/notifications_pattern_phone_ticker.png b/docs/html/design/media/notifications_pattern_phone_ticker.png
similarity index 100%
rename from docs/html/design/static/content/notifications_pattern_phone_ticker.png
rename to docs/html/design/media/notifications_pattern_phone_ticker.png
diff --git a/docs/html/design/static/content/notifications_pattern_real_time_people.png b/docs/html/design/media/notifications_pattern_real_time_people.png
similarity index 100%
rename from docs/html/design/static/content/notifications_pattern_real_time_people.png
rename to docs/html/design/media/notifications_pattern_real_time_people.png
diff --git a/docs/html/design/static/content/notifications_pattern_social_fail.png b/docs/html/design/media/notifications_pattern_social_fail.png
similarity index 100%
rename from docs/html/design/static/content/notifications_pattern_social_fail.png
rename to docs/html/design/media/notifications_pattern_social_fail.png
diff --git a/docs/html/design/static/content/notifications_pattern_tablet.png b/docs/html/design/media/notifications_pattern_tablet.png
similarity index 100%
rename from docs/html/design/static/content/notifications_pattern_tablet.png
rename to docs/html/design/media/notifications_pattern_tablet.png
diff --git a/docs/html/design/static/content/patterns_landing.png b/docs/html/design/media/patterns_landing.png
similarity index 100%
rename from docs/html/design/static/content/patterns_landing.png
rename to docs/html/design/media/patterns_landing.png
diff --git a/docs/html/design/static/content/picker_datetime.png b/docs/html/design/media/picker_datetime.png
similarity index 100%
rename from docs/html/design/static/content/picker_datetime.png
rename to docs/html/design/media/picker_datetime.png
diff --git a/docs/html/design/static/content/picker_space.png b/docs/html/design/media/picker_space.png
similarity index 100%
rename from docs/html/design/static/content/picker_space.png
rename to docs/html/design/media/picker_space.png
diff --git a/docs/html/design/static/content/principles_decide_for_me.png b/docs/html/design/media/principles_decide_for_me.png
similarity index 100%
rename from docs/html/design/static/content/principles_decide_for_me.png
rename to docs/html/design/media/principles_decide_for_me.png
diff --git a/docs/html/design/static/content/principles_delight.png b/docs/html/design/media/principles_delight.png
similarity index 100%
rename from docs/html/design/static/content/principles_delight.png
rename to docs/html/design/media/principles_delight.png
diff --git a/docs/html/design/static/content/principles_error.png b/docs/html/design/media/principles_error.png
similarity index 100%
rename from docs/html/design/static/content/principles_error.png
rename to docs/html/design/media/principles_error.png
diff --git a/docs/html/design/static/content/principles_get_to_know_me.png b/docs/html/design/media/principles_get_to_know_me.png
similarity index 100%
rename from docs/html/design/static/content/principles_get_to_know_me.png
rename to docs/html/design/media/principles_get_to_know_me.png
diff --git a/docs/html/design/static/content/principles_heavy_lifting.png b/docs/html/design/media/principles_heavy_lifting.png
similarity index 100%
rename from docs/html/design/static/content/principles_heavy_lifting.png
rename to docs/html/design/media/principles_heavy_lifting.png
diff --git a/docs/html/design/static/content/principles_important_interruption.png b/docs/html/design/media/principles_important_interruption.png
similarity index 100%
rename from docs/html/design/static/content/principles_important_interruption.png
rename to docs/html/design/media/principles_important_interruption.png
diff --git a/docs/html/design/static/content/principles_information_when_need_it.png b/docs/html/design/media/principles_information_when_need_it.png
similarity index 100%
rename from docs/html/design/static/content/principles_information_when_need_it.png
rename to docs/html/design/media/principles_information_when_need_it.png
diff --git a/docs/html/design/static/content/principles_keep_it_brief.png b/docs/html/design/media/principles_keep_it_brief.png
similarity index 100%
rename from docs/html/design/static/content/principles_keep_it_brief.png
rename to docs/html/design/media/principles_keep_it_brief.png
diff --git a/docs/html/design/static/content/principles_looks_same.png b/docs/html/design/media/principles_looks_same.png
similarity index 100%
rename from docs/html/design/static/content/principles_looks_same.png
rename to docs/html/design/media/principles_looks_same.png
diff --git a/docs/html/design/static/content/principles_make_important_fast.png b/docs/html/design/media/principles_make_important_fast.png
similarity index 100%
rename from docs/html/design/static/content/principles_make_important_fast.png
rename to docs/html/design/media/principles_make_important_fast.png
diff --git a/docs/html/design/static/content/principles_make_it_mine.png b/docs/html/design/media/principles_make_it_mine.png
similarity index 100%
rename from docs/html/design/static/content/principles_make_it_mine.png
rename to docs/html/design/media/principles_make_it_mine.png
diff --git a/docs/html/design/static/content/principles_navigation.png b/docs/html/design/media/principles_navigation.png
similarity index 100%
rename from docs/html/design/static/content/principles_navigation.png
rename to docs/html/design/media/principles_navigation.png
diff --git a/docs/html/design/static/content/principles_never_lose_stuff.png b/docs/html/design/media/principles_never_lose_stuff.png
similarity index 100%
rename from docs/html/design/static/content/principles_never_lose_stuff.png
rename to docs/html/design/media/principles_never_lose_stuff.png
diff --git a/docs/html/design/static/content/principles_pictures.png b/docs/html/design/media/principles_pictures.png
similarity index 100%
rename from docs/html/design/static/content/principles_pictures.png
rename to docs/html/design/media/principles_pictures.png
diff --git a/docs/html/design/static/content/principles_real_objects.png b/docs/html/design/media/principles_real_objects.png
similarity index 100%
rename from docs/html/design/static/content/principles_real_objects.png
rename to docs/html/design/media/principles_real_objects.png
diff --git a/docs/html/design/static/content/principles_sprinkle_encouragement.png b/docs/html/design/media/principles_sprinkle_encouragement.png
similarity index 100%
rename from docs/html/design/static/content/principles_sprinkle_encouragement.png
rename to docs/html/design/media/principles_sprinkle_encouragement.png
diff --git a/docs/html/design/static/content/principles_tricks.png b/docs/html/design/media/principles_tricks.png
similarity index 100%
rename from docs/html/design/static/content/principles_tricks.png
rename to docs/html/design/media/principles_tricks.png
diff --git a/docs/html/design/static/content/progress_activity.png b/docs/html/design/media/progress_activity.png
similarity index 100%
rename from docs/html/design/static/content/progress_activity.png
rename to docs/html/design/media/progress_activity.png
diff --git a/docs/html/design/static/content/progress_activity2.png b/docs/html/design/media/progress_activity2.png
similarity index 100%
rename from docs/html/design/static/content/progress_activity2.png
rename to docs/html/design/media/progress_activity2.png
diff --git a/docs/html/design/static/content/progress_download.png b/docs/html/design/media/progress_download.png
similarity index 100%
rename from docs/html/design/static/content/progress_download.png
rename to docs/html/design/media/progress_download.png
diff --git a/docs/html/design/static/content/progress_themes.png b/docs/html/design/media/progress_themes.png
similarity index 100%
rename from docs/html/design/static/content/progress_themes.png
rename to docs/html/design/media/progress_themes.png
diff --git a/docs/html/design/static/content/scroll_index.mp4 b/docs/html/design/media/scroll_index.mp4
similarity index 100%
rename from docs/html/design/static/content/scroll_index.mp4
rename to docs/html/design/media/scroll_index.mp4
diff --git a/docs/html/design/static/content/scroll_index.ogv b/docs/html/design/media/scroll_index.ogv
similarity index 100%
rename from docs/html/design/static/content/scroll_index.ogv
rename to docs/html/design/media/scroll_index.ogv
diff --git a/docs/html/design/static/content/scroll_index.webm b/docs/html/design/media/scroll_index.webm
similarity index 100%
rename from docs/html/design/static/content/scroll_index.webm
rename to docs/html/design/media/scroll_index.webm
diff --git a/docs/html/design/static/content/scroll_indicator.mp4 b/docs/html/design/media/scroll_indicator.mp4
similarity index 100%
rename from docs/html/design/static/content/scroll_indicator.mp4
rename to docs/html/design/media/scroll_indicator.mp4
diff --git a/docs/html/design/static/content/scroll_indicator.ogv b/docs/html/design/media/scroll_indicator.ogv
similarity index 100%
rename from docs/html/design/static/content/scroll_indicator.ogv
rename to docs/html/design/media/scroll_indicator.ogv
diff --git a/docs/html/design/static/content/scroll_indicator.webm b/docs/html/design/media/scroll_indicator.webm
similarity index 100%
rename from docs/html/design/static/content/scroll_indicator.webm
rename to docs/html/design/media/scroll_indicator.webm
diff --git a/docs/html/design/static/content/seekbar_example.png b/docs/html/design/media/seekbar_example.png
similarity index 100%
rename from docs/html/design/static/content/seekbar_example.png
rename to docs/html/design/media/seekbar_example.png
diff --git a/docs/html/design/static/content/seekbar_style.png b/docs/html/design/media/seekbar_style.png
similarity index 100%
rename from docs/html/design/static/content/seekbar_style.png
rename to docs/html/design/media/seekbar_style.png
diff --git a/docs/html/design/static/content/selection_adjusting_actions.png b/docs/html/design/media/selection_adjusting_actions.png
similarity index 100%
rename from docs/html/design/static/content/selection_adjusting_actions.png
rename to docs/html/design/media/selection_adjusting_actions.png
diff --git a/docs/html/design/static/content/selection_cab_big.png b/docs/html/design/media/selection_cab_big.png
similarity index 100%
rename from docs/html/design/static/content/selection_cab_big.png
rename to docs/html/design/media/selection_cab_big.png
diff --git a/docs/html/design/static/content/selection_cab_example.png b/docs/html/design/media/selection_cab_example.png
similarity index 100%
rename from docs/html/design/static/content/selection_cab_example.png
rename to docs/html/design/media/selection_cab_example.png
diff --git a/docs/html/design/static/content/selection_context_menu.png b/docs/html/design/media/selection_context_menu.png
similarity index 100%
rename from docs/html/design/static/content/selection_context_menu.png
rename to docs/html/design/media/selection_context_menu.png
diff --git a/docs/html/design/static/content/spinners_actionbar.png b/docs/html/design/media/spinners_actionbar.png
similarity index 100%
rename from docs/html/design/static/content/spinners_actionbar.png
rename to docs/html/design/media/spinners_actionbar.png
diff --git a/docs/html/design/static/content/spinners_form.png b/docs/html/design/media/spinners_form.png
similarity index 100%
rename from docs/html/design/static/content/spinners_form.png
rename to docs/html/design/media/spinners_form.png
diff --git a/docs/html/design/static/content/spinners_hololightanddark.png b/docs/html/design/media/spinners_hololightanddark.png
similarity index 100%
rename from docs/html/design/static/content/spinners_hololightanddark.png
rename to docs/html/design/media/spinners_hololightanddark.png
diff --git a/docs/html/design/static/content/swipe_tabs.mp4 b/docs/html/design/media/swipe_tabs.mp4
similarity index 100%
rename from docs/html/design/static/content/swipe_tabs.mp4
rename to docs/html/design/media/swipe_tabs.mp4
diff --git a/docs/html/design/static/content/swipe_tabs.ogv b/docs/html/design/media/swipe_tabs.ogv
similarity index 100%
rename from docs/html/design/static/content/swipe_tabs.ogv
rename to docs/html/design/media/swipe_tabs.ogv
diff --git a/docs/html/design/static/content/swipe_tabs.png b/docs/html/design/media/swipe_tabs.png
similarity index 100%
rename from docs/html/design/static/content/swipe_tabs.png
rename to docs/html/design/media/swipe_tabs.png
diff --git a/docs/html/design/static/content/swipe_tabs.webm b/docs/html/design/media/swipe_tabs.webm
similarity index 100%
rename from docs/html/design/static/content/swipe_tabs.webm
rename to docs/html/design/media/swipe_tabs.webm
diff --git a/docs/html/design/static/content/swipe_views.png b/docs/html/design/media/swipe_views.png
similarity index 100%
rename from docs/html/design/static/content/swipe_views.png
rename to docs/html/design/media/swipe_views.png
diff --git a/docs/html/design/static/content/swipe_views2.png b/docs/html/design/media/swipe_views2.png
similarity index 100%
rename from docs/html/design/static/content/swipe_views2.png
rename to docs/html/design/media/swipe_views2.png
diff --git a/docs/html/design/static/content/switches_checkboxes.png b/docs/html/design/media/switches_checkboxes.png
similarity index 100%
rename from docs/html/design/static/content/switches_checkboxes.png
rename to docs/html/design/media/switches_checkboxes.png
diff --git a/docs/html/design/static/content/switches_radios.png b/docs/html/design/media/switches_radios.png
similarity index 100%
rename from docs/html/design/static/content/switches_radios.png
rename to docs/html/design/media/switches_radios.png
diff --git a/docs/html/design/static/content/switches_switches.png b/docs/html/design/media/switches_switches.png
similarity index 100%
rename from docs/html/design/static/content/switches_switches.png
rename to docs/html/design/media/switches_switches.png
diff --git a/docs/html/design/static/content/system_ui_landing.png b/docs/html/design/media/system_ui_landing.png
similarity index 100%
rename from docs/html/design/static/content/system_ui_landing.png
rename to docs/html/design/media/system_ui_landing.png
diff --git a/docs/html/design/static/content/tabs_overview.png b/docs/html/design/media/tabs_overview.png
similarity index 100%
rename from docs/html/design/static/content/tabs_overview.png
rename to docs/html/design/media/tabs_overview.png
diff --git a/docs/html/design/static/content/tabs_scrolly.mp4 b/docs/html/design/media/tabs_scrolly.mp4
similarity index 100%
rename from docs/html/design/static/content/tabs_scrolly.mp4
rename to docs/html/design/media/tabs_scrolly.mp4
diff --git a/docs/html/design/static/content/tabs_scrolly.ogv b/docs/html/design/media/tabs_scrolly.ogv
similarity index 100%
rename from docs/html/design/static/content/tabs_scrolly.ogv
rename to docs/html/design/media/tabs_scrolly.ogv
diff --git a/docs/html/design/static/content/tabs_scrolly.webm b/docs/html/design/media/tabs_scrolly.webm
similarity index 100%
rename from docs/html/design/static/content/tabs_scrolly.webm
rename to docs/html/design/media/tabs_scrolly.webm
diff --git a/docs/html/design/static/content/tabs_stacked.png b/docs/html/design/media/tabs_stacked.png
similarity index 100%
rename from docs/html/design/static/content/tabs_stacked.png
rename to docs/html/design/media/tabs_stacked.png
diff --git a/docs/html/design/static/content/tabs_standard.png b/docs/html/design/media/tabs_standard.png
similarity index 100%
rename from docs/html/design/static/content/tabs_standard.png
rename to docs/html/design/media/tabs_standard.png
diff --git a/docs/html/design/static/content/tabs_youtube.png b/docs/html/design/media/tabs_youtube.png
similarity index 100%
rename from docs/html/design/static/content/tabs_youtube.png
rename to docs/html/design/media/tabs_youtube.png
diff --git a/docs/html/design/static/content/text_input_holodarkandlight.png b/docs/html/design/media/text_input_holodarkandlight.png
similarity index 100%
rename from docs/html/design/static/content/text_input_holodarkandlight.png
rename to docs/html/design/media/text_input_holodarkandlight.png
diff --git a/docs/html/design/static/content/text_input_singlevsmultiline.png b/docs/html/design/media/text_input_singlevsmultiline.png
similarity index 100%
rename from docs/html/design/static/content/text_input_singlevsmultiline.png
rename to docs/html/design/media/text_input_singlevsmultiline.png
diff --git a/docs/html/design/static/content/text_input_textselection.png b/docs/html/design/media/text_input_textselection.png
similarity index 100%
rename from docs/html/design/static/content/text_input_textselection.png
rename to docs/html/design/media/text_input_textselection.png
diff --git a/docs/html/design/static/content/text_input_typesandtypedown.png b/docs/html/design/media/text_input_typesandtypedown.png
similarity index 100%
rename from docs/html/design/static/content/text_input_typesandtypedown.png
rename to docs/html/design/media/text_input_typesandtypedown.png
diff --git a/docs/html/design/static/content/themes_holo_dark.png b/docs/html/design/media/themes_holo_dark.png
similarity index 100%
rename from docs/html/design/static/content/themes_holo_dark.png
rename to docs/html/design/media/themes_holo_dark.png
diff --git a/docs/html/design/static/content/themes_holo_inverse.png b/docs/html/design/media/themes_holo_inverse.png
similarity index 100%
rename from docs/html/design/static/content/themes_holo_inverse.png
rename to docs/html/design/media/themes_holo_inverse.png
diff --git a/docs/html/design/static/content/themes_holo_light.png b/docs/html/design/media/themes_holo_light.png
similarity index 100%
rename from docs/html/design/static/content/themes_holo_light.png
rename to docs/html/design/media/themes_holo_light.png
diff --git a/docs/html/design/static/content/touch_feedback_communication.png b/docs/html/design/media/touch_feedback_communication.png
similarity index 100%
rename from docs/html/design/static/content/touch_feedback_communication.png
rename to docs/html/design/media/touch_feedback_communication.png
diff --git a/docs/html/design/static/content/touch_feedback_manipulation.png b/docs/html/design/media/touch_feedback_manipulation.png
similarity index 100%
rename from docs/html/design/static/content/touch_feedback_manipulation.png
rename to docs/html/design/media/touch_feedback_manipulation.png
diff --git a/docs/html/design/static/content/touch_feedback_reaction_response.png b/docs/html/design/media/touch_feedback_reaction_response.png
similarity index 100%
rename from docs/html/design/static/content/touch_feedback_reaction_response.png
rename to docs/html/design/media/touch_feedback_reaction_response.png
diff --git a/docs/html/design/static/content/touch_feedback_states.png b/docs/html/design/media/touch_feedback_states.png
similarity index 100%
rename from docs/html/design/static/content/touch_feedback_states.png
rename to docs/html/design/media/touch_feedback_states.png
diff --git a/docs/html/design/static/content/typography_alphas.png b/docs/html/design/media/typography_alphas.png
similarity index 100%
rename from docs/html/design/static/content/typography_alphas.png
rename to docs/html/design/media/typography_alphas.png
diff --git a/docs/html/design/static/content/typography_defaults.png b/docs/html/design/media/typography_defaults.png
similarity index 100%
rename from docs/html/design/static/content/typography_defaults.png
rename to docs/html/design/media/typography_defaults.png
diff --git a/docs/html/design/static/content/typography_main.png b/docs/html/design/media/typography_main.png
similarity index 100%
rename from docs/html/design/static/content/typography_main.png
rename to docs/html/design/media/typography_main.png
diff --git a/docs/html/design/static/content/typography_sizes.png b/docs/html/design/media/typography_sizes.png
similarity index 100%
rename from docs/html/design/static/content/typography_sizes.png
rename to docs/html/design/media/typography_sizes.png
diff --git a/docs/html/design/static/content/ui_overview_all_apps.png b/docs/html/design/media/ui_overview_all_apps.png
similarity index 100%
rename from docs/html/design/static/content/ui_overview_all_apps.png
rename to docs/html/design/media/ui_overview_all_apps.png
diff --git a/docs/html/design/static/content/ui_overview_app_ui.png b/docs/html/design/media/ui_overview_app_ui.png
similarity index 100%
rename from docs/html/design/static/content/ui_overview_app_ui.png
rename to docs/html/design/media/ui_overview_app_ui.png
diff --git a/docs/html/design/static/content/ui_overview_home_screen.png b/docs/html/design/media/ui_overview_home_screen.png
similarity index 100%
rename from docs/html/design/static/content/ui_overview_home_screen.png
rename to docs/html/design/media/ui_overview_home_screen.png
diff --git a/docs/html/design/static/content/ui_overview_notifications.png b/docs/html/design/media/ui_overview_notifications.png
similarity index 100%
rename from docs/html/design/static/content/ui_overview_notifications.png
rename to docs/html/design/media/ui_overview_notifications.png
diff --git a/docs/html/design/static/content/ui_overview_recents.png b/docs/html/design/media/ui_overview_recents.png
similarity index 100%
rename from docs/html/design/static/content/ui_overview_recents.png
rename to docs/html/design/media/ui_overview_recents.png
diff --git a/docs/html/design/static/content/ui_overview_system_ui.png b/docs/html/design/media/ui_overview_system_ui.png
similarity index 100%
rename from docs/html/design/static/content/ui_overview_system_ui.png
rename to docs/html/design/media/ui_overview_system_ui.png
diff --git a/docs/html/design/static/content/whats_new_action_bar.png b/docs/html/design/media/whats_new_action_bar.png
similarity index 100%
rename from docs/html/design/static/content/whats_new_action_bar.png
rename to docs/html/design/media/whats_new_action_bar.png
diff --git a/docs/html/design/static/content/whats_new_multipanel.png b/docs/html/design/media/whats_new_multipanel.png
similarity index 100%
rename from docs/html/design/static/content/whats_new_multipanel.png
rename to docs/html/design/media/whats_new_multipanel.png
diff --git a/docs/html/design/static/content/whats_new_multiselect.png b/docs/html/design/media/whats_new_multiselect.png
similarity index 100%
rename from docs/html/design/static/content/whats_new_multiselect.png
rename to docs/html/design/media/whats_new_multiselect.png
diff --git a/docs/html/design/static/content/whats_new_nav_bar.png b/docs/html/design/media/whats_new_nav_bar.png
similarity index 100%
rename from docs/html/design/static/content/whats_new_nav_bar.png
rename to docs/html/design/media/whats_new_nav_bar.png
diff --git a/docs/html/design/patterns/actionbar.html b/docs/html/design/patterns/actionbar.jd
similarity index 62%
rename from docs/html/design/patterns/actionbar.html
rename to docs/html/design/patterns/actionbar.jd
index e93498e6b73ed..9e3f48c2d9f54 100644
--- a/docs/html/design/patterns/actionbar.html
+++ b/docs/html/design/patterns/actionbar.jd
@@ -1,112 +1,7 @@
-
-
-
-
-
+page.title=Action Bar
+@jd:body
-Android Design - Action Bar
-
-
-
-
-
-
-
-
-
-
The action bar is arguably the most important structural element of an Android app. It's a
dedicated piece of real estate at the top of each screen that is generally persistent throughout the
@@ -125,7 +20,7 @@ your app's interface consistent with the core Android apps.
General Organization
The action bar is split into four different functional areas that apply to most apps.
-
+
@@ -138,10 +33,10 @@ The app icon establishes your app's identity. It can be replaced with a differen
if you wish.
Important: If the app is currently not displaying the top-level screen, be sure to display the Up
caret to the left of the app icon, so the user can navigate up the hierarchy. For more discussion of
-Up navigation, see the Navigation pattern.
+Up navigation, see the Navigation pattern.
-
+
App icon with and without "up" affordance.
@@ -195,7 +90,7 @@ rotation on different screen sizes.
You can adapt to such changes by using split action bars, which allow you to distribute action bar
content across multiple bars located below the main action bar or at the bottom of the screen.
-
+
Split action bar showing action buttons at the bottom of the screen in vertical orientation.
@@ -221,7 +116,7 @@ the top bar.
-
+
@@ -232,7 +127,7 @@ the top bar.
duration of a particular sub-task. CABs are most typically used for tasks that involve acting on
selected data or text.
-
+
Contextual action bar shown in Browser and Gmail
@@ -255,7 +150,7 @@ content of a CAB in order to insert the actions you would like the user to be ab
Tabs display app views concurrently and make it easy to explore and switch between them. Use tabs
if you expect your users to switch views frequently.
-
+
There are two types of tabs: fixed and scrollable.
@@ -276,12 +171,12 @@ themselves.
- Scrolling tabs on Google Play.
+ Scrolling tabs in Google Play.
@@ -298,7 +193,7 @@ tabs. Fixed tabs in the main action bar can move to the top bar when the screen
-
+
Default fixed tabs shown in Holo Dark & Light.
@@ -320,7 +215,7 @@ tabs. Fixed tabs in the main action bar can move to the top bar when the screen
-
+
Action bar spinner from Calendar application.
@@ -336,7 +231,7 @@ action overflow. The action bar and the action overflow should only present acti
are available. If an action is unavailable in the current context, hide it. Do not show it as
disabled.
-
+
A sampling of action buttons used throughout the Gmail application.
@@ -403,7 +298,7 @@ display the action overflow when the user presses the key.
-
+
Action overflow is pinned to the right side.
@@ -427,7 +322,7 @@ rules:
-
+
In the above table "o" denotes an action bar item and "=" an overflow icon.
@@ -438,7 +333,7 @@ provider in your action bar. The share action provider is designed to speed
displaying the most recently used sharing service next to a spinner button that contains other
sharing options.
-
+
The Gallery app's share action provider with extended spinner for additional sharing options.
@@ -457,55 +352,3 @@ actions exceeds the capacity of the main action bar, display them separately in
Examples are the number of unread messages in a messaging inbox view or the Now Playing information
in a music player. Carefully plan which important information you would like to display and
structure your action bars accordingly.
-
-
-
-
-
-
-
Apps such as Phone whose main purpose is to switch between different activities without deeper
navigation
-
Apps such as Gmail and Google Play that combine a broad set of data views with deep navigation
+
Apps such as Gmail or Google Play that combine a broad set of data views with deep navigation
Your app's structure depends largely on the content and tasks you want to surface for your users.
General Structure
@@ -123,7 +18,7 @@ deep and complex, category views connect top level and detail views.
-
+
@@ -163,7 +58,7 @@ layouts that are visually engaging and appropriate for the data type and screen
-
+
The Google Play app's start screen primarily allows navigation into the stores for Apps, Music, Books,
Movies and Games. It is also enriched with tailored recommendations and promotions that
@@ -194,7 +89,7 @@ important actions.
-
+
Email is about productivity, so an efficient, easy-to-skim list with higher data density works
well. Navigation supports switching between accounts and recent labels. Icons for creating a
@@ -216,7 +111,7 @@ monotony of simple list views.
-
+
The 3D carousel celebrates cover art and establishes a unique identity for the Music app.
Defaulting to the Recent view keeps the focus on music the user has been listening to lately.
@@ -248,7 +143,7 @@ experience than to an explicit navigation step.
items are in view simultaneously). Keep the number of scrolling tabs at a manageable level to
minimize navigational effort. Rule of thumb: no more than 5–7 tabs.
-
+
Google Play uses tabs to simultaneously show category choice and content. To navigate between
categories, users can swipe left/right on the content.
@@ -260,7 +155,7 @@ minimize navigational effort. Rule of thumb: no more than 5–7 tabs.
If the categories in the tabs are not closely related, favor fixed tabs, so that all categories are
in view at the same time.
-
+
YouTube uses fixed tabs to switch between different, relatively unrelated functional areas.
@@ -275,7 +170,7 @@ invocation of actions for a data item from within list or grid views, display pr
directly on list view items using drop-downs or split list items. This lets people invoke actions on
data without having to navigate all the way down the hierarchy.
-
+
Music allows the user to act upon a data item (song) from within the category view (album),
thereby removing the need to navigate all the way down to the song's detail view.
@@ -301,12 +196,12 @@ the data type being displayed, and therefore differs widely among apps.
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
@@ -327,12 +222,12 @@ full-screen content.
between items from within the detail view. Use swipe views or other techniques, such as filmstrips,
to achieve this.
-
+
Gmail using swipe views to navigate from detail view to detail view.
-
+
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.
@@ -357,55 +252,3 @@ to achieve this.
Allow for quick navigation between detail items with swipe views.
Deprecation of navigation hardware keys (Back, Menu, Search, Home) in favor of handling navigation
- via virtual controls (Back, Home, Recents).
-
Robust pattern for the use of menus in action bars.
-
-
Android 4.0 brings these changes for tablets to the phone platform.
-
-
Adapting Android 4.0 to Older Hardware and Apps
-
-
-
-
-
Phones with virtual navigation controls
-
Android apps written for Android 3.0 and later display actions in the action bar. Actions that don't
-fit in the action bar or aren't important enough to be displayed at the top level appear in the
-action overflow.
-
Users access the action overflow by touching it in the action bar.
-
-
-
-
-
-
-
-
-
-
-
-
-
Phones with physical navigation keys
-
Android phones with traditional navigation hardware keys don't display the virtual navigation bar at
-the bottom of the screen. Instead, the action overflow is available from the menu hardware key. The
-resulting actions popup has the same style as in the previous example, but is displayed at the bottom of the screen.
-
-
-
-
-
-
-
-
-
-
-
-
-
Legacy apps on phones with virtual navigation controls
-
When you run an app that was built for Android 2.3 or earlier on a phone with virtual navigation
-controls, an action overflow control appears at the right side of the virtual navigation bar. You
-can touch the control to display the app's actions in the traditional Android menu styling.
Deprecation of navigation hardware keys (Back, Menu, Search, Home) in favor of handling navigation
+ via virtual controls (Back, Home, Recents).
+
Robust pattern for the use of menus in action bars.
+
+
Android 4.0 brings these changes for tablets to the phone platform.
+
+
Adapting Android 4.0 to Older Hardware and Apps
+
+
+
+
+
Phones with virtual navigation controls
+
Android apps written for Android 3.0 and later display actions in the action bar. Actions that don't
+fit in the action bar or aren't important enough to be displayed at the top level appear in the
+action overflow.
+
Users access the action overflow by touching it in the action bar.
+
+
+
+
+
+
+
+
+
+
+
+
+
Phones with physical navigation keys
+
Android phones with traditional navigation hardware keys don't display the virtual navigation bar at
+the bottom of the screen. Instead, the action overflow is available from the menu hardware key. The
+resulting actions popup has the same style as in the previous example, but is displayed at the bottom of the screen.
+
+
+
+
+
+
+
+
+
+
+
+
+
Legacy apps on phones with virtual navigation controls
+
When you run an app that was built for Android 2.3 or earlier on a phone with virtual navigation
+controls, an action overflow control appears at the right side of the virtual navigation bar. You
+can touch the control to display the app's actions in the traditional Android menu styling.
Gestures allow users to interact with your app by manipulating the screen objects you provide. The
-following table shows the core gesture set that is supported in Android.
-
-
-
-
-
-
-
Touch
-
Triggers the default functionality for a given item.
-
-
-
-
Action
-
Press, lift
-
-
-
-
-
-
-
-
Long press
-
Enters data selection mode. Allows you to select one or more items in a view and act upon
- the data using a contextual action bar. Avoid using long press for showing contextual menus.
-
-
-
-
Action
-
Press, wait, lift
-
-
-
-
-
-
-
-
Swipe
-
Scrolls overflowing content, or navigates between views in the same hierarchy.
-
-
-
-
Action
-
Press, move, lift
-
-
-
-
-
-
-
-
-
-
-
-
Drag
-
Rearranges data within a view, or moves data into a container (e.g. folders on Home Screen).
-
-
-
-
Action
-
Long press, move, lift
-
-
-
-
-
-
-
-
Double touch
-
Zooms into content. Also used as a secondary gesture for text selection.
Gestures allow users to interact with your app by manipulating the screen objects you provide. The
+following table shows the core gesture set that is supported in Android.
+
+
+
+
+
+
+
Touch
+
Triggers the default functionality for a given item.
+
+
+
+
Action
+
Press, lift
+
+
+
+
+
+
+
+
Long press
+
Enters data selection mode. Allows you to select one or more items in a view and act upon
+ the data using a contextual action bar. Avoid using long press for showing contextual menus.
+
+
+
+
Action
+
Press, wait, lift
+
+
+
+
+
+
+
+
Swipe
+
Scrolls overflowing content, or navigates between views in the same hierarchy.
+
+
+
+
Action
+
Press, move, lift
+
+
+
+
+
+
+
+
+
+
+
+
Drag
+
Rearranges data within a view, or moves data into a container (e.g. folders on Home Screen).
+
+
+
+
Action
+
Long press, move, lift
+
+
+
+
+
+
+
+
Double touch
+
Zooms into content. Also used as a secondary gesture for text selection.
When writing an app for Android, keep in mind that Android devices come in many different screen
-sizes and types. Make sure that your app consistently provides a balanced and aesthetically pleasing
-layout by adjusting its content to varying screen sizes and orientations.
-
Panels are a great way for your app to achieve this. They allow you to combine multiple views into
-one compound view when a lot of horizontal screen real estate is available and by splitting them up
-when less space is available.
-
Combining Multiple Views Into One
-
-
On smaller devices your content is typically divided into a master grid or list view and a detail
-view. Touching an item in the master view opens a different screen showing that item's detail
-information.
-
-
-
-
Because tablets have more screen real estate than phones, you can use panels to combine the related
-list and detail views into a single compound view. This uses the additional space more efficiently
-and makes navigating the app easier.
-
-
-
-
In general, use the pane on the right to present more information about the item you selected in the
-left pane. Make sure to keep the item in the left pane selected in order to establish the
-relationship between the panels.
-
Compound Views and Orientation Changes
-
-
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.
-
-
-
-
-
-
-
-
-
-
Stretch/compress
-
Adjust the column width of your left pane to achieve a balanced layout in both orientations.
-
-
-
-
-
-
-
-
-
-
-
-
-
Stack
-
Rearrange the panels on your screen to match the orientation.
-
-
-
-
-
-
-
-
-
-
-
-
-
Expand/collapse
-
When the device rotates, collapse the left pane view to only show the most important information.
-Provide an expand control that allows the user to bring the left pane content back to its original
-width and vice versa.
-
-
-
-
-
-
-
-
-
-
-
-
-
Show/hide
-
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.
-
-
-
-
-
Checklist
-
-
-
-
Plan in advance on how your app scales to different screen sizes and screen orientations.
-
-
-
Identify the most appropriate method for the panels in your compound views to reorganize
- themselves when screen orientation changes.
-
-
-
Look for opportunities to consolidate your views into multi-panel compound views.
-
-
-
Make sure that your screens provide functional parity after the screen orientation
- changes.
When writing an app for Android, keep in mind that Android devices come in many different screen
+sizes and types. Make sure that your app consistently provides a balanced and aesthetically pleasing
+layout by adjusting its content to varying screen sizes and orientations.
+
Panels are a great way for your app to achieve this. They allow you to combine multiple views into
+one compound view when a lot of horizontal screen real estate is available and by splitting them up
+when less space is available.
+
Combining Multiple Views Into One
+
+
On smaller devices your content is typically divided into a master grid or list view and a detail
+view. Touching an item in the master view opens a different screen showing that item's detail
+information.
+
+
+
+
Because tablets have more screen real estate than phones, you can use panels to combine the related
+list and detail views into a single compound view. This uses the additional space more efficiently
+and makes navigating the app easier.
+
+
+
+
In general, use the pane on the right to present more information about the item you selected in the
+left pane. Make sure to keep the item in the left pane selected in order to establish the
+relationship between the panels.
+
Compound Views and Orientation Changes
+
+
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.
+
+
+
+
+
+
+
+
+
+
Stretch/compress
+
Adjust the column width of your left pane to achieve a balanced layout in both orientations.
+
+
+
+
+
+
+
+
+
+
+
+
+
Stack
+
Rearrange the panels on your screen to match the orientation.
+
+
+
+
+
+
+
+
+
+
+
+
+
Expand/collapse
+
When the device rotates, collapse the left pane view to only show the most important information.
+Provide an expand control that allows the user to bring the left pane content back to its original
+width and vice versa.
+
+
+
+
+
+
+
+
+
+
+
+
+
Show/hide
+
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.
+
+
+
+
+
Checklist
+
+
+
+
Plan in advance on how your app scales to different screen sizes and screen orientations.
+
+
+
Identify the most appropriate method for the panels in your compound views to reorganize
+ themselves when screen orientation changes.
+
+
+
Look for opportunities to consolidate your views into multi-panel compound views.
+
+
+
Make sure that your screens provide functional parity after the screen orientation
+ changes.
+
+
diff --git a/docs/html/design/patterns/navigation.html b/docs/html/design/patterns/navigation.html
deleted file mode 100644
index 5d1568e971118..0000000000000
--- a/docs/html/design/patterns/navigation.html
+++ /dev/null
@@ -1,275 +0,0 @@
-
-
-
-
-
-
-Android Design - Navigation with Back and Up
-
-
-
-
-
-
-
-
-
-
Consistent navigation is an essential component of the overall user experience. Few things frustrate
-users more than basic navigation that behaves in inconsistent and unexpected ways. Android 3.0
-introduced significant changes to the global navigation behavior. Thoughtfully following the
-guidelines for Back and Up will make your app's navigation predictable and reliable for your users.
-
Android 2.3 and earlier relied upon the system Back button for supporting navigation within an
-app. With the introduction of action bars in Android 3.0, a second navigation mechanism appeared:
-the Up button, consisting of the app icon and a left-point caret.
-
-
-
-
Up vs. Back
-
-
The Up button is used to navigate within an application based on the hierarchical relationships
-between screens. For instance, if screen A displays a list of items, and selecting an item leads to
-screen B (which presents that item in more detail), then screen B should offer an Up button that
-returns to screen A.
-
If a screen is the topmost one in an app (i.e. the home of the app), it should not present an Up
-button.
-
The system Back key is used to navigate based on the history of screens the user has recently seen,
-in reverse chronological order—in effect, the temporal relationships between screens.
-
When the previously viewed screen is also the hierarchical parent of the current screen, pressing
-the Back key will have the same result as pressing an Up button -- this is a common occurrence.
-However, unlike the Up button, which ensures the user remains within your app, the Back key can
-return the user to the Home screen, or even to a different application.
-
-
-
-
The Back key also supports a few behaviors not directly tied to screen-to-screen navigation:
-
-
Back dismisses floating windows (dialogs, popups)
-
Back dismisses contextual action bars, and removes the highlight from the selected items
-
Back hides the onscreen keyboard (IME)
-
-
Navigation Within Your App
-
-
Navigating to screens with multiple entry points
-
Sometimes a screen doesn't have a strict position within the app's hierarchy, and can be reached
-from multiple entry points—e.g., a settings screen which can be navigated to from any screen
-in your app. In this case, the Up button should choose to return to the referring screen, behaving
-identically to Back.
-
Changing view within a screen
-
Changing view options for a screen does not change the behavior of Up or Back: the screen is still
-in the same place within the app's hierarchy, and no new navigation history is created.
-
Examples of such view changes are:
-
-
Switching views using tabs and/or left-and-right swipes
-
Switching views using a dropdown (aka collapsed tabs)
-
Filtering a list
-
Sorting a list
-
Changing display characteristics (e.g. zooming)
-
-
Navigating between sibling screens
-
When your app supports navigation from a list of items to a detail view of one of those items, it's
-often desirable to support direction navigation from that item to another one which precedes or
-follows it in the list. For example, in Gmail, it's easy to swipe left or right from a conversation
-to view a newer or older one in the same Inbox. Just as when changing view within a screen, such
-navigation does not change the behavior of Up or Back.
-
-
-
-
However, a notable exception to this occurs when browsing between "related" detail views not tied
-together by the referring list—for example, when browsing on Google Play between apps from
-the same developer, or albums by the same artist. In these cases, following each link does create
-history, causing the Back button to step through each screen of related content which has been
-viewed. Up should continue to bypass these related screens and navigate to the most recently viewed
-container screen.
-
-
-
-
You have the ability to make the Up behavior even smarter based on your knowledge of detail
-view. If we extend our Google Play sample from above, imagine the user has navigated from the last Book
-viewed to the details for the Movie adaptation. In that case, Up can return to a container (Movies)
-which the user had not previously navigated through.
-
-
-
-
Navigation From Outside Your App
-
-
There are two categories of navigation from outside your app to screens deep within the app's
-hierarchy:
-
-
App-to-app navigation, such as via intent completion.
-
System-to-app navigation, such as via notifications and home screen widgets.
-
-
Gmail provides examples of each of these. For app-to-app navigation, a "Share" intent goes directly
-to the compose screen. For system-to-app navigation, both a new message notification and a home
-screen widget can bypass the Inbox screen, taking the user directly to a conversation view.
-
App-to-app navigation
-
When navigating deep into your app's hierarchy directly from another app via an intent, Back will
-return to the referring app.
-
The Up button is handled as follows:
-- If the destination screen is typically reached from one particular screen within your app, Up
- should navigate to that screen.
-- Otherwise, Up should navigate to the topmost ("Home") screen of your app.
-
For example, after choosing to share a book being viewed on Google Play, the user navigates directly to
-Gmail's compose screen. From there, Up returns to the Inbox (which happens to be both the
-typical referrer to compose, as well as the topmost screen of the app), while Back returns to
-Google Play.
-
-
-
-
System-to-app navigation
-
If your app was reached via the system mechanisms of notifications or home screen widgets, Up
-behaves as described for app-to-app navigation, above.
-
For the Back key, you should make navigation more predictably by inserting into the task's back
-stack the complete upward navigation path to the app's topmost screen. This way, a user who has
-forgotten how they entered your app can safely navigate to the app's topmost screen before exiting
-it.
-
For example, Gmail's Home screen widget has a button for diving directly to its compose screen.
-After following that path, the Back key first returns to the Inbox, and from there continues to
-Home.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/docs/html/design/patterns/navigation.jd b/docs/html/design/patterns/navigation.jd
new file mode 100644
index 0000000000000..d35cd8298eb04
--- /dev/null
+++ b/docs/html/design/patterns/navigation.jd
@@ -0,0 +1,116 @@
+page.title=Navigation with Back and Up
+@jd:body
+
+
Consistent navigation is an essential component of the overall user experience. Few things frustrate
+users more than basic navigation that behaves in inconsistent and unexpected ways. Android 3.0
+introduced significant changes to the global navigation behavior. Thoughtfully following the
+guidelines for Back and Up will make your app's navigation predictable and reliable for your users.
+
Android 2.3 and earlier relied upon the system Back button for supporting navigation within an
+app. With the introduction of action bars in Android 3.0, a second navigation mechanism appeared:
+the Up button, consisting of the app icon and a left-point caret.
+
+
+
+
Up vs. Back
+
+
The Up button is used to navigate within an application based on the hierarchical relationships
+between screens. For instance, if screen A displays a list of items, and selecting an item leads to
+screen B (which presents that item in more detail), then screen B should offer an Up button that
+returns to screen A.
+
If a screen is the topmost one in an app (i.e. the home of the app), it should not present an Up
+button.
+
The system Back key is used to navigate based on the history of screens the user has recently seen,
+in reverse chronological order—in effect, the temporal relationships between screens.
+
When the previously viewed screen is also the hierarchical parent of the current screen, pressing
+the Back key will have the same result as pressing an Up button -- this is a common occurrence.
+However, unlike the Up button, which ensures the user remains within your app, the Back key can
+return the user to the Home screen, or even to a different application.
+
+
+
+
The Back key also supports a few behaviors not directly tied to screen-to-screen navigation:
+
+
Back dismisses floating windows (dialogs, popups)
+
Back dismisses contextual action bars, and removes the highlight from the selected items
+
Back hides the onscreen keyboard (IME)
+
+
Navigation Within Your App
+
+
Navigating to screens with multiple entry points
+
Sometimes a screen doesn't have a strict position within the app's hierarchy, and can be reached
+from multiple entry points—e.g., a settings screen which can be navigated to from any screen
+in your app. In this case, the Up button should choose to return to the referring screen, behaving
+identically to Back.
+
Changing view within a screen
+
Changing view options for a screen does not change the behavior of Up or Back: the screen is still
+in the same place within the app's hierarchy, and no new navigation history is created.
+
Examples of such view changes are:
+
+
Switching views using tabs and/or left-and-right swipes
+
Switching views using a dropdown (aka collapsed tabs)
+
Filtering a list
+
Sorting a list
+
Changing display characteristics (e.g. zooming)
+
+
Navigating between sibling screens
+
When your app supports navigation from a list of items to a detail view of one of those items, it's
+often desirable to support direction navigation from that item to another one which precedes or
+follows it in the list. For example, in Gmail, it's easy to swipe left or right from a conversation
+to view a newer or older one in the same Inbox. Just as when changing view within a screen, such
+navigation does not change the behavior of Up or Back.
+
+
+
+
However, a notable exception to this occurs when browsing between "related" detail views not tied
+together by the referring list—for example, when browsing on Google Play between apps from
+the same developer, or albums by the same artist. In these cases, following each link does create
+history, causing the Back button to step through each screen of related content which has been
+viewed. Up should continue to bypass these related screens and navigate to the most recently viewed
+container screen.
+
+
+
+
You have the ability to make the Up behavior even smarter based on your knowledge of detail
+view. If we extend our Google Play sample from above, imagine the user has navigated from the last Book
+viewed to the details for the Movie adaptation. In that case, Up can return to a container (Movies)
+which the user had not previously navigated through.
+
+
+
+
Navigation From Outside Your App
+
+
There are two categories of navigation from outside your app to screens deep within the app's
+hierarchy:
+
+
App-to-app navigation, such as via intent completion.
+
System-to-app navigation, such as via notifications and home screen widgets.
+
+
Gmail provides examples of each of these. For app-to-app navigation, a "Share" intent goes directly
+to the compose screen. For system-to-app navigation, both a new message notification and a home
+screen widget can bypass the Inbox screen, taking the user directly to a conversation view.
+
App-to-app navigation
+
When navigating deep into your app's hierarchy directly from another app via an intent, Back will
+return to the referring app.
+
The Up button is handled as follows:
+- If the destination screen is typically reached from one particular screen within your app, Up
+ should navigate to that screen.
+- Otherwise, Up should navigate to the topmost ("Home") screen of your app.
+
For example, after choosing to share a book being viewed on Google Play, the user navigates directly to
+Gmail's compose screen. From there, Up returns to the Inbox (which happens to be both the
+typical referrer to compose, as well as the topmost screen of the app), while Back returns to
+Google Play.
+
+
+
+
System-to-app navigation
+
If your app was reached via the system mechanisms of notifications or home screen widgets, Up
+behaves as described for app-to-app navigation, above.
+
For the Back key, you should make navigation more predictably by inserting into the task's back
+stack the complete upward navigation path to the app's topmost screen. This way, a user who has
+forgotten how they entered your app can safely navigate to the app's topmost screen before exiting
+it.
+
For example, Gmail's Home screen widget has a button for diving directly to its compose screen.
+After following that path, the Back key first returns to the Inbox, and from there continues to
+Home.
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.
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.
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.
@@ -128,7 +23,7 @@ synchronous form of communication: there is another user actively waiting on you
Calendar events are another good example of when to use a notification and grab the user's
attention, because the event is imminent, and calendar events often involve other people.
-
+
@@ -172,7 +67,7 @@ develop a widget that they can choose to place on their home screen.
-
+
@@ -182,7 +77,7 @@ develop a widget that they can choose to place on their home screen.
-
+
@@ -204,7 +99,7 @@ stacked (see Stacked notifications below) and references multiple items
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.
+Navigation design pattern.
Timestamps for time sensitive events
By default, standard Android notifications include a timestamp in the upper right corner. Consider
whether the timestamp is valuable in the context of your notification. If the timestamp is not
@@ -222,11 +117,11 @@ an altogether new notification object. Instead, stack the notification.
notifications of a particular kind are pending.
Don't:
-
+
Do:
-
+
If you keep the summary and detail information on different screens, a stacked notification may need
to open to a different place in the app than a single notification.
@@ -252,7 +147,7 @@ hides automatically.
-
+
@@ -278,7 +173,7 @@ currently pending.
-
+
@@ -301,7 +196,7 @@ notification drawer is opened by touching anywhere inside the notification area.
-
+
@@ -309,7 +204,7 @@ notification drawer is opened by touching anywhere inside the notification area.
-
+
@@ -338,57 +233,4 @@ and toasts can echo back that an action has been successfully taken.
Most developers want to distribute their apps on multiple platforms. As you plan your app for
-Android, keep in mind that different platforms play by different rules and conventions. Design
-decisions that make perfect sense on one platform will look and feel misplaced in the context of a
-different platform. While a "design once, ship anywhere" approach might save you time up-front, you
-run the very real risk of creating inconsistent apps that alienate users. Consider the following
-guidelines to avoid the most common traps and pitfalls.
-
-
-
-
-
-
-
Don't mimic UI elements from other platforms
-
Platforms typically provide a carefully designed set of UI elements that are themed in a very
-distinctive fashion. For example, some platforms advocate rounded corners for their buttons, others
-use gradients in their title bars. In some cases, elements may have the same purpose, but are
-designed to work a bit differently.
-
As you build your app for Android, don't carry over themed UI elements from other platforms and
-don't mimic their specific behaviors. Review the Building Blocks section in this styleguide to learn about Android's most important UI elements
-and the way they look in the system default themes. Also examine Android's platform apps to get a
-sense of how elements are applied in the context of an app. If you want to customize the theme of UI
-elements, customize carefully according to your specific branding - and not according to the
-conventions of a different platform.
-
-
-
-
-
-
- Sampling of UI elements from Android, iOS and Windows Phone 7.
-
-
-
-
-
-
-
-
-
-
-
Don't carry over platform-specific icons
-
Platforms typically provide sets of icons for common functionality, such as sharing, creating a new
-document or deleting.
-
As you are migrating your app to Android, please swap out platform-specific icons with their Android
-counterparts.
-
You can find a wide variety of icons for use in your app in the Android SDK.
-
-
-
-
-
-
- Sampling of icons from Android, iOS and Windows Phone 7.
-
-
-
-
-
-
-
-
-
-
-
Don't use bottom tab bars
-
Other platforms use the bottom tab bar to switch between the app's views. Per platform convention,
-Android's tabs for view control are shown in action bars at the top of the screen instead. In
-addition, Android apps may use a bottom bar to display actions on a split action bar.
-
You should follow this guideline to create a consistent experience with other apps on the Android
-platform and to avoid confusion between actions and view switching on Android.
-
For more information on how to properly use action bars for view control, see
-Action Bars.
-
-
-
-
-
-
- Android dialer with tabs in an action bar vs. bottom tabs in iOS.
-
-
-
-
-
-
-
-
-
Don't use labeled back buttons on action bars
-
Other platforms use an explicit back button with label to allow the user to navigate up the
-application's hierarchy. Instead, Android uses the main action bar's app icon for hierarchical
-navigation and the navigation bar's back button for temporal navigation. For more information,
-please review the Navigation pattern.
-
Follow this guideline to provide a consistent navigation experience across the platform.
-
-
-
-
-
-
- Android action bar with up caret vs. iOS labeled "Back" button.
-
-
-
-
-
-
-
-
-
Don't use right-pointing carets on line items
-
A common pattern on other platforms is the display of right-pointing carets on line items that allow
-the user to drill deeper into additional content.
-
Android does not use such indicators on drill-down line items. Avoid them to stay consistent with
-the platform and in order to not have the user guess as to what the meaning of those carets may be.
-
-
-
-
-
-
- Android settings without right-pointing carets in line items vs. iOS settings.
-
-
-
-
-
-
Device Independence
-
-
Remember that your app will run on a wide variety of different screen sizes. Create visual assets
-for different screen sizes and densities and make use of concepts such as multi-pane layouts to
-appropriately scale your UI on different device form factors.
Most developers want to distribute their apps on multiple platforms. As you plan your app for
+Android, keep in mind that different platforms play by different rules and conventions. Design
+decisions that make perfect sense on one platform will look and feel misplaced in the context of a
+different platform. While a "design once, ship anywhere" approach might save you time up-front, you
+run the very real risk of creating inconsistent apps that alienate users. Consider the following
+guidelines to avoid the most common traps and pitfalls.
+
+
+
+
+
+
+
Don't mimic UI elements from other platforms
+
Platforms typically provide a carefully designed set of UI elements that are themed in a very
+distinctive fashion. For example, some platforms advocate rounded corners for their buttons, others
+use gradients in their title bars. In some cases, elements may have the same purpose, but are
+designed to work a bit differently.
+
As you build your app for Android, don't carry over themed UI elements from other platforms and
+don't mimic their specific behaviors. Review the
+Building Blocks
+section in this styleguide to learn about Android's most important UI elements
+and the way they look in the system default themes. Also examine Android's platform apps to get a
+sense of how elements are applied in the context of an app. If you want to customize the theme of UI
+elements, customize carefully according to your specific branding - and not according to the
+conventions of a different platform.
+
+
+
+
+
+
+ Sampling of UI elements from Android, iOS and Windows Phone 7.
+
+
+
+
+
+
+
+
+
+
+
Don't carry over platform-specific icons
+
Platforms typically provide sets of icons for common functionality, such as sharing, creating a new
+document or deleting.
+
As you are migrating your app to Android, please swap out platform-specific icons with their Android
+counterparts.
+
You can find a wide variety of icons for use in your app in the Android SDK.
+
+
+
+
+
+
+ Sampling of icons from Android, iOS and Windows Phone 7.
+
+
+
+
+
+
+
+
+
+
+
Don't use bottom tab bars
+
Other platforms use the bottom tab bar to switch between the app's views. Per platform convention,
+Android's tabs for view control are shown in action bars at the top of the screen instead. In
+addition, Android apps may use a bottom bar to display actions on a split action bar.
+
You should follow this guideline to create a consistent experience with other apps on the Android
+platform and to avoid confusion between actions and view switching on Android.
+
For more information on how to properly use action bars for view control, see
+Action Bars.
+
+
+
+
+
+
+ Android dialer with tabs in an action bar vs. bottom tabs in iOS.
+
+
+
+
+
+
+
+
+
Don't use labeled back buttons on action bars
+
Other platforms use an explicit back button with label to allow the user to navigate up the
+application's hierarchy. Instead, Android uses the main action bar's app icon for hierarchical
+navigation and the navigation bar's back button for temporal navigation. For more information,
+please review the Navigation pattern.
+
Follow this guideline to provide a consistent navigation experience across the platform.
+
+
+
+
+
+
+ Android action bar with up caret vs. iOS labeled "Back" button.
+
+
+
+
+
+
+
+
+
Don't use right-pointing carets on line items
+
A common pattern on other platforms is the display of right-pointing carets on line items that allow
+the user to drill deeper into additional content.
+
Android does not use such indicators on drill-down line items. Avoid them to stay consistent with
+the platform and in order to not have the user guess as to what the meaning of those carets may be.
+
+
+
+
+
+
+ Android settings without right-pointing carets in line items vs. iOS settings.
+
+
+
+
+
+
Device Independence
+
+
Remember that your app will run on a wide variety of different screen sizes. Create visual assets
+for different screen sizes and densities and make use of concepts such as multi-pane layouts to
+appropriately scale your UI on different device form factors.
Android 3.0 introduced the long press gesture—that is, a touch that's held in the same
-position for a moment—as the global gesture to select data. This affects the way you should
-handle multi-select and contextual actions in your apps.
-
-
-
-
-
-
-
What has changed?
-
In previous versions of Android, the long press gesture was universally used to display contextual
-actions for a given data item in a contextual menu.
-
This pattern changed with Android 3.0. The long press gesture is now used to select data, combining
-contextual actions and selection management functions for selected data into a new element called
-the contextual action bar (CAB).
-
-
-
-
-
-
- Traditional use of the long press gesture to show contextual menus.
-
-
-
-
-
-
Using the contextual action bar (CAB)
-
The selection CAB is a temporary action bar that overlays your app's current action bar while data
-is selected. It appears after the user long presses on a selectable data item.
-
-
-
-
-
-
-
-
-
From here the user can:
-
-
Select additional data items by touching them.
-
Trigger an action from the CAB that applies to all highlighted data items. The CAB then
- automatically dismisses itself.
-
Dismiss the CAB via the navigation bar's Back button or the CAB's checkmark button. This removes
- the CAB along with all selection highlights.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Selecting CAB actions
-
You can decide which actions and elements appear in the CAB. Use the guidelines in the Action Bar
-pattern to decide which items to surface at the top level and which to move to the
-action overflow.
-
Dynamically adjust CAB actions
-
In most cases you need to adjust the actions in the CAB dynamically as the user adds more items to
-the selection. Actions that apply to a single selected data item don't necessarily apply to multiple
-selected data items of the same kind.
-
-
-
-
-
-
- Adjusting actions in the CAB as additional items are selected.
-
-
-
-
-
-
Checklist
-
-
-
-
Whenever your app supports the selection of multiple data items, make use of the contextual action
- bar (CAB).
-
-
-
Reserve the long press gesture for selection exclusively. Don't use it to display traditional
- contextual menus.
-
-
-
If you don't support multi-selection within a list, long press should do nothing.
-
-
-
Plan the actions you want to display inside of a CAB in the same way you would plan the actions
- inside your app's action bar.
Android 3.0 introduced the long press gesture—that is, a touch that's held in the same
+position for a moment—as the global gesture to select data. This affects the way you should
+handle multi-select and contextual actions in your apps.
+
+
+
+
+
+
+
What has changed?
+
In previous versions of Android, the long press gesture was universally used to display contextual
+actions for a given data item in a contextual menu.
+
This pattern changed with Android 3.0. The long press gesture is now used to select data, combining
+contextual actions and selection management functions for selected data into a new element called
+the contextual action bar (CAB).
+
+
+
+
+
+
+ Traditional use of the long press gesture to show contextual menus.
+
+
+
+
+
+
Using the contextual action bar (CAB)
+
The selection CAB is a temporary action bar that overlays your app's current action bar while data
+is selected. It appears after the user long presses on a selectable data item.
+
+
+
+
+
+
+
+
+
From here the user can:
+
+
Select additional data items by touching them.
+
Trigger an action from the CAB that applies to all highlighted data items. The CAB then
+ automatically dismisses itself.
+
Dismiss the CAB via the navigation bar's Back button or the CAB's checkmark button. This removes
+ the CAB along with all selection highlights.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Selecting CAB actions
+
You can decide which actions and elements appear in the CAB. Use the guidelines in the Action Bar
+pattern to decide which items to surface at the top level and which to move to the
+action overflow.
+
Dynamically adjust CAB actions
+
In most cases you need to adjust the actions in the CAB dynamically as the user adds more items to
+the selection. Actions that apply to a single selected data item don't necessarily apply to multiple
+selected data items of the same kind.
+
+
+
+
+
+
+ Adjusting actions in the CAB as additional items are selected.
+
+
+
+
+
+
Checklist
+
+
+
+
Whenever your app supports the selection of multiple data items, make use of the contextual action
+ bar (CAB).
+
+
+
Reserve the long press gesture for selection exclusively. Don't use it to display traditional
+ contextual menus.
+
+
+
If you don't support multi-selection within a list, long press should do nothing.
+
+
+
Plan the actions you want to display inside of a CAB in the same way you would plan the actions
+ inside your app's action bar.
Efficient navigation is one of the cornerstones of a well-designed app. While apps are generally
-built in a hierarchical fashion, there are instances where horizontal navigation can flatten
-vertical hierarchies and make access to related data items faster and more enjoyable. Swipe views
-allow the user to efficiently move from item to item using a simple gesture and thereby make
-browsing and consuming data a more fluent experience.
-
Swiping Between Detail Views
-
-
An app's data is often organized in a master/detail relationship: The user can view a list of
-related data items, such as images, chats, or emails, and then pick one of the items to see the
-detail contents in a separate screen.
-
-
-
- Master (left) and detail (right) views.
-
-
-
On a phone, since the master and detail are on separate screens, this typically requires the user to
-jump back and forth between the list and the detail view, aka "pogo-sticking".
-
In cases where users will want to view multiple detail items in succession, avoid pogo-sticking by
-using the swipe gesture to navigate to the next/previous detail view.
-
-
-
- Navigating between consecutive Email messages using the swipe gesture.
-
-
-
Swiping Between Tabs
-
-
-
-
-
-
-
-
- People app with swipe gesture navigation between top-level screens.
-
-
-
-
-
-
-
If your app uses action bar tabs, use swipe to navigate between the different views.
-
-
-
Checklist
-
-
-
-
Use swipe to quickly navigate between detail views or tabs.
-
-
-
Transition between the views as the user performs the swipe gesture. Do not wait for the
- gesture to complete and then transition between views.
-
-
-
If you used buttons in the past for previous/next navigation, replace them with
- the swipe gesture.
-
-
-
Consider adding contextual information in your detail view that informs the user about the
- relative list position of the currently visible item.
Efficient navigation is one of the cornerstones of a well-designed app. While apps are generally
+built in a hierarchical fashion, there are instances where horizontal navigation can flatten
+vertical hierarchies and make access to related data items faster and more enjoyable. Swipe views
+allow the user to efficiently move from item to item using a simple gesture and thereby make
+browsing and consuming data a more fluent experience.
+
Swiping Between Detail Views
+
+
An app's data is often organized in a master/detail relationship: The user can view a list of
+related data items, such as images, chats, or emails, and then pick one of the items to see the
+detail contents in a separate screen.
+
+
+
+ Master (left) and detail (right) views.
+
+
+
On a phone, since the master and detail are on separate screens, this typically requires the user to
+jump back and forth between the list and the detail view, aka "pogo-sticking".
+
In cases where users will want to view multiple detail items in succession, avoid pogo-sticking by
+using the swipe gesture to navigate to the next/previous detail view.
+
+
+
+ Navigating between consecutive Email messages using the swipe gesture.
+
+
+
Swiping Between Tabs
+
+
+
+
+
+
+
+
+ People app with swipe gesture navigation between top-level screens.
+
+
+
+
+
+
+
If your app uses action bar tabs, use swipe to navigate between the different views.
+
+
+
Checklist
+
+
+
+
Use swipe to quickly navigate between detail views or tabs.
+
+
+
Transition between the views as the user performs the swipe gesture. Do not wait for the
+ gesture to complete and then transition between views.
+
+
+
If you used buttons in the past for previous/next navigation, replace them with
+ the swipe gesture.
+
+
+
Consider adding contextual information in your detail view that informs the user about the
+ relative list position of the currently visible item.