{"id":2902,"date":"2022-11-17T12:09:06","date_gmt":"2022-11-17T20:09:06","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/surface-duo\/?p=2902"},"modified":"2022-11-17T12:50:48","modified_gmt":"2022-11-17T20:50:48","slug":"large-screen-design-patterns","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/surface-duo\/large-screen-design-patterns\/","title":{"rendered":"Large-screen design patterns"},"content":{"rendered":"<p>\n  Hello app designers,\n<\/p>\n<p>\n  At the first <a href=\"https:\/\/developer.android.com\/events\/dev-summit\">Android Dev Summit<\/a> of 2022 Google announced updated <a href=\"https:\/\/developer.android.com\/large-screens\/\">large screen design guidance<\/a>, <a href=\"https:\/\/developer.android.com\/large-screens\/gallery\/\">gallery<\/a>, and <a href=\"https:\/\/developer.android.com\/guide\/topics\/large-screens\/learn-about-foldables\">tips for foldables<\/a>. These updates included a list of <a href=\"https:\/\/developer.android.com\/guide\/topics\/large-screens\/large-screen-canonical-layouts\">canonical layouts<\/a> which are complementary to the <a href=\"https:\/\/learn.microsoft.com\/dual-screen\/introduction\">dual-screen design patterns<\/a> featured in the Surface Duo developer documentation. Material Design has also <a href=\"https:\/\/m3.material.io\/foundations\/adaptive-design\/canonical-layouts\">been updated<\/a>, so there is a lot of support for designers looking to create new experiences that go beyond a small phone screen.\n<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/surface-duo\/wp-content\/uploads\/sites\/53\/2022\/11\/all-framed.png\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/surface-duo\/wp-content\/uploads\/sites\/53\/2022\/11\/all-framed.png\" alt=\"Phone, foldable, and tablet device showing the list-detail design pattern\" width=\"1559\" height=\"825\" class=\"alignnone size-full wp-image-2915\" srcset=\"https:\/\/devblogs.microsoft.com\/surface-duo\/wp-content\/uploads\/sites\/53\/2022\/11\/all-framed.png 1559w, https:\/\/devblogs.microsoft.com\/surface-duo\/wp-content\/uploads\/sites\/53\/2022\/11\/all-framed-300x159.png 300w, https:\/\/devblogs.microsoft.com\/surface-duo\/wp-content\/uploads\/sites\/53\/2022\/11\/all-framed-1024x542.png 1024w, https:\/\/devblogs.microsoft.com\/surface-duo\/wp-content\/uploads\/sites\/53\/2022\/11\/all-framed-768x406.png 768w, https:\/\/devblogs.microsoft.com\/surface-duo\/wp-content\/uploads\/sites\/53\/2022\/11\/all-framed-1536x813.png 1536w\" sizes=\"(max-width: 1559px) 100vw, 1559px\" \/><\/a><\/p>\n<p>\n  This post helps designers and developers looking to build for both foldable and large-screen devices to combine both sources of guidance to create adaptive user experiences. For developers working with cross-platform tools like Flutter, Xamarin, .NET MAUI, or React Native, implementation examples are available on the <a href=\"https:\/\/learn.microsoft.com\/dual-screen\/\">Surface Duo developer site<\/a>.\n<\/p>\n<h2>List-detail<\/h2>\n<p>\n  Presenting a list of items \u2013 and showing more details for a single, selected item \u2013 is extremely common across many types of application including social media, productivity, messaging, reading, media browsing, and more. Here are two different examples of how list-detail might be implemented on a foldable device:\n<\/p>\n<p>\n  <img decoding=\"async\" width=\"1131\" height=\"367\" src=\"https:\/\/devblogs.microsoft.com\/surface-duo\/wp-content\/uploads\/sites\/53\/2022\/11\/graphical-user-interface-description-automaticall.png\" class=\"wp-image-2903\" alt=\"Two stylized dual-screen layouts - the first showing a list-detail layout with images and the second showing an email-like application\" srcset=\"https:\/\/devblogs.microsoft.com\/surface-duo\/wp-content\/uploads\/sites\/53\/2022\/11\/graphical-user-interface-description-automaticall.png 1131w, https:\/\/devblogs.microsoft.com\/surface-duo\/wp-content\/uploads\/sites\/53\/2022\/11\/graphical-user-interface-description-automaticall-300x97.png 300w, https:\/\/devblogs.microsoft.com\/surface-duo\/wp-content\/uploads\/sites\/53\/2022\/11\/graphical-user-interface-description-automaticall-1024x332.png 1024w, https:\/\/devblogs.microsoft.com\/surface-duo\/wp-content\/uploads\/sites\/53\/2022\/11\/graphical-user-interface-description-automaticall-768x249.png 768w\" sizes=\"(max-width: 1131px) 100vw, 1131px\" \/>\n<\/p>\n<p>\n  This layout can adapt to smaller and larger screens in easily recognizable ways:\n<\/p>\n<ul>\n<li>\n    On phones, the interaction becomes multi-step, where the list typically uses the entire screen and selecting an item leads to the detail using the entire screen, with a back gesture to return to the list.\n  <\/li>\n<li>\n    On tablets and desktop devices, the list and detail can exist side-by-side but in a split-screen ratio chosen by the developer or user.\n  <\/li>\n<\/ul>\n<p>\n  The <a href=\"https:\/\/developer.android.com\/guide\/topics\/large-screens\/large-screen-canonical-layouts#list-detail\">Android list-detail canonical guidance<\/a> includes tips for building with different tools:\n<\/p>\n<ul>\n<li>\n    Compose with TwoPane from the Accompanist library\n  <\/li>\n<li>\n    Views using SlidingPaneLayout\n  <\/li>\n<li>\n    Activity Embedding from Jetpack Window Manager\n  <\/li>\n<\/ul>\n<p><a href=\"https:\/\/learn.microsoft.com\/dual-screen\/design\/list-detail\">Best practices<\/a> for this pattern are included in the <a href=\"https:\/\/learn.microsoft.com\/dual-screen\/design\/kit\">Surface Duo Design Kit<\/a>, and <a href=\"https:\/\/learn.microsoft.com\/dual-screen\/android\/samples\">samples are available for Views and Compose<\/a> and <a href=\"https:\/\/learn.microsoft.com\/dual-screen\/\">other platforms<\/a>.\n<\/p>\n<h2>Supporting panel<\/h2>\n<p>\n  The <a href=\"https:\/\/developer.android.com\/guide\/topics\/large-screens\/large-screen-canonical-layouts#supporting_panel\">Supporting panel<\/a> canonical layout maps to the dual-screen <a href=\"https:\/\/learn.microsoft.com\/dual-screen\/design\/companion-pane\">Companion pane<\/a> pattern \u2013 there is a primary view that has is the focus of the task, and a secondary view that contains a tool palette, secondary information, or some other UI elements that are dependent on the primary view.\n<\/p>\n<p>\n  <img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/surface-duo\/wp-content\/uploads\/sites\/53\/2022\/11\/graphical-user-interface-description-automaticall-1.png\" class=\"wp-image-2904\" alt=\"Stylized Surface Duo showing a stylized video editing application with the main video on the left screen and timeline\/editing features on the right screen\" width=\"400\" height=\"250\" \/>\n<\/p>\n<p>\n  To adapt to other screen sizes:\n<\/p>\n<ul>\n<li>\n    On phones, the secondary view may be below the main view or inside a bottom sheet. Depending on available space, the secondary view could also be summarized (with a subset of the information or controls available) with UI affordances to expose the full view.\n  <\/li>\n<li>\n    On tablets and desktops, the secondary view is typically smaller than the main view and might be positioned on along the right or bottom edge). The secondary view might be resizable or hidable, depending on the use-case.\n  <\/li>\n<\/ul>\n<p>\n  The dual-screen gaming controller is a \u2018special case\u2019 of the companion pane\/supporting panel \u2013 on smaller and larger screens the controls are typically <em>overlaid<\/em> on the gaming portal rather than kept as a distinct view.\n<\/p>\n<p>\n  <img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/surface-duo\/wp-content\/uploads\/sites\/53\/2022\/11\/graphical-user-interface-application-description-1.png\" class=\"wp-image-2905\" alt=\"Stylized Surface Duo showing a game controller on the bottom screen\" width=\"150\" height=\"250\" \/>\n<\/p>\n<p>\n  The <a href=\"https:\/\/developer.android.com\/guide\/topics\/large-screens\/large-screen-canonical-layouts#supporting_panel\">Android supporting panel guidance<\/a> includes tips for building with view or Compose.\n<\/p>\n<h2>Feed<\/h2>\n<p>\n  The <a href=\"https:\/\/developer.android.com\/guide\/topics\/large-screens\/large-screen-canonical-layouts#feed\">Feed<\/a> canonical layout is well suited to tablets and desktop devices. Feed layouts consist of a grid of content items that can be laid out a variety of ways depending on content type and screen size, from a single column to a multi-column scrolling collection. \n<\/p>\n<p>\n  A feed could adapt to a foldable device in different ways:\n<\/p>\n<ul>\n<li>\n    Display the feed on one side of the fold, and create a list-detail-like view with the selected feed item highlighted on the other side of the fold (.\n  <\/li>\n<li>\n    Display the feed across the fold, but with the content items laid out to avoid the fold area.\n  <\/li>\n<\/ul>\n<h2>Other dual-screen patterns<\/h2>\n<p>\n  Extended canvas, dual-view, and two page design patterns are featured in the Surface Duo Design Kit. \n<\/p>\n<h3>Extended canvas<\/h3>\n<p>\n  The <a href=\"https:\/\/learn.microsoft.com\/dual-screen\/design\/extended-canvas\">extended canvas<\/a> design pattern works great for use cases like maps, spreadsheets, or drawing surfaces. The key adaptation is to ensure any focus elements on the canvas (like the \u2018current location\u2019 on a map), or any palette or interactive elements, are not hidden by the hinge.\n<\/p>\n<p>\n  <img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/surface-duo\/wp-content\/uploads\/sites\/53\/2022\/11\/a-picture-containing-text-window-display-descri.png\" class=\"wp-image-2906\" alt=\"Stylized map view on Surface Duo\" width=\"400\" height=\"250\" \/>\n<\/p>\n<p>\n  Scaling extended canvas up and down (to phones or tablets and desktops) typically involves just adjusting the size of the viewport, and positioning any markers and palettes within the screen bounds.\n<\/p>\n<h3>Dual view<\/h3>\n<p><a href=\"https:\/\/learn.microsoft.com\/dual-screen\/design\/dual-view\">Dual view<\/a> is defined as \u201cshowing two views of the same data\u201d, and is commonly used in one of two ways:\n<\/p>\n<ul>\n<li>\n    Synchronized navigation \u2013 for example, a listing of restaurants or real estate. One panel contains a scrolling list and the other a map, where the pins or markers are also presented in the list. Panning and zooming the map can filter the data in the list, and selecting a list item can change the focus of the map.\n  <\/li>\n<li>\n    Comparing information \u2013 another use for side-by-side views is comparisons, such as product differences, source code check-ins, or even an editing and preview mode.\n  <\/li>\n<\/ul>\n<p>\n  <img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/surface-duo\/wp-content\/uploads\/sites\/53\/2022\/11\/graphical-user-interface-application-website-de.png\" class=\"wp-image-2907\" alt=\"Stylized list and map view on Surface Duo\" width=\"400\" height=\"250\" \/>\n<\/p>\n<p>\n  On smaller screens this pattern is typically collapsed so that only one of the views is visible, and the other is toggled on or off with a button or tabbed view.\n<\/p>\n<p>\n  On larger screens, both views are typically shown although the split may be adjustable and not fixed at half the screen.\n<\/p>\n<h3>Two page<\/h3>\n<p>\n  Long-form reading is a great application for dual-screen devices, so it makes sense to consider the unique requirements of a <a href=\"https:\/\/learn.microsoft.com\/dual-screen\/design\/two-page\">two page<\/a> design pattern.\n<\/p>\n<p>\n  <img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/surface-duo\/wp-content\/uploads\/sites\/53\/2022\/11\/graphical-user-interface-application-description-2.png\" class=\"wp-image-2908\" alt=\"Stylized magazine view on Surface Duo\" width=\"400\" height=\"250\" \/>\n<\/p>\n<p>\n  This pattern is also easy to adapt for other screen sizes \u2013 on smaller devices just show one page, and on larger devices allow the content to reflow to fill the screen. Some content might make sense to flow even to landscape tablet size, or alternatively the screen could be split to present the same two page layout that is presented on foldables.\n<\/p>\n<h2>Feedback and resources<\/h2>\n<p>\n  The Android GitHub org has a <a href=\"https:\/\/github.com\/android\/user-interface-samples\/tree\/main\/CanonicalLayouts\">collection of samples for their canonical layouts<\/a>. The Surface Duo team has <a href=\"https:\/\/learn.microsoft.com\/dual-screen\/\">documentation and samples for all these user experiences<\/a>, written with View and Jetpack Compose, and also with a variety of cross-platform tools including Flutter, React Native, Xamarin and .NET MAUI.\n<\/p>\n<p>Finally, please join us for our <a href=\"https:\/\/twitch.tv\/surfaceduodev\">dual screen developer livestream<\/a> at 11am (Pacific time) each Friday \u2013 mark it in your calendar and check out the <a href=\"\">archives on YouTube<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hello app designers, At the first Android Dev Summit of 2022 Google announced updated large screen design guidance, gallery, and tips for foldables. These updates included a list of canonical layouts which are complementary to the dual-screen design patterns featured in the Surface Duo developer documentation. Material Design has also been updated, so there is [&hellip;]<\/p>\n","protected":false},"author":570,"featured_media":2915,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[710],"tags":[709,717,46],"class_list":["post-2902","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-surface-duo-design","tag-design","tag-foldable","tag-surface-duo"],"acf":[],"blog_post_summary":"<p>Hello app designers, At the first Android Dev Summit of 2022 Google announced updated large screen design guidance, gallery, and tips for foldables. These updates included a list of canonical layouts which are complementary to the dual-screen design patterns featured in the Surface Duo developer documentation. Material Design has also been updated, so there is [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/surface-duo\/wp-json\/wp\/v2\/posts\/2902","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/surface-duo\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/surface-duo\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/surface-duo\/wp-json\/wp\/v2\/users\/570"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/surface-duo\/wp-json\/wp\/v2\/comments?post=2902"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/surface-duo\/wp-json\/wp\/v2\/posts\/2902\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/surface-duo\/wp-json\/wp\/v2\/media\/2915"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/surface-duo\/wp-json\/wp\/v2\/media?parent=2902"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/surface-duo\/wp-json\/wp\/v2\/categories?post=2902"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/surface-duo\/wp-json\/wp\/v2\/tags?post=2902"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}