{"id":2222,"date":"2022-02-10T12:14:17","date_gmt":"2022-02-10T20:14:17","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/surface-duo\/?p=2222"},"modified":"2022-02-10T12:14:17","modified_gmt":"2022-02-10T20:14:17","slug":"dual-screen-app-design-walkthrough","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/surface-duo\/dual-screen-app-design-walkthrough\/","title":{"rendered":"Dual-screen app design walkthrough"},"content":{"rendered":"<p>\n  Hello designers,\n<\/p>\n<p>\n  This week we are excited to share with you our journey that inspires, educates, and showcases real world usage of various design patterns and provides designers a sense of exploring foldables with working examples of how to make use of the dual-screen\/folding form factors in different ways when an application is spanning both displays.\n<\/p>\n<p>\n  <img decoding=\"async\" width=\"812\" height=\"494\" src=\"https:\/\/devblogs.microsoft.com\/surface-duo\/wp-content\/uploads\/sites\/53\/2022\/02\/a-picture-containing-text-electronics-descriptio-2.png\" class=\"wp-image-2223\" alt=\"Surface Duo running sample app\" srcset=\"https:\/\/devblogs.microsoft.com\/surface-duo\/wp-content\/uploads\/sites\/53\/2022\/02\/a-picture-containing-text-electronics-descriptio-2.png 812w, https:\/\/devblogs.microsoft.com\/surface-duo\/wp-content\/uploads\/sites\/53\/2022\/02\/a-picture-containing-text-electronics-descriptio-2-300x183.png 300w, https:\/\/devblogs.microsoft.com\/surface-duo\/wp-content\/uploads\/sites\/53\/2022\/02\/a-picture-containing-text-electronics-descriptio-2-768x467.png 768w\" sizes=\"(max-width: 812px) 100vw, 812px\" \/>\n<\/p>\n<p>\n  The experience of this sample application is centered around the needs of a travelling salesperson who visits various stores across the city that buy the salesperson\u2019s products. The sample app helps the salesperson select and navigate to multiple customer locations across the city, assists the salesperson with various tasks during the visit to each potential client location, and creates a purchase order for each new customer product purchase.\n<\/p>\n<p>\n  In this blog we take you through a design-development process for creating foldable app experiences. The result  is an app that\u2019s available on Google Play Store for <a href=\"https:\/\/aka.ms\/DualScreenExperiencePlayStore\">download<\/a> which we highly encourage you to try out and share with us your feedback.\n<\/p>\n<p><strong>Process<\/strong>\n<\/p>\n<p>\n  The developer experience team at Microsoft, after having conversations with various app partners and several Android app creators, realized that there are quite a few challenges when it comes to designing and developing apps for foldable smartphones. Questions like &#8212; What does it mean to be hinge-aware? What does it mean for apps to adapt to dynamic layouts? How can single-screen apps become dual-screen apps? How to design for foldables?\n<\/p>\n<p>\n  With these questions we thought to ourselves: \n<\/p>\n<p><center><i>\n  How might we provide value to our developers and designers which showcases all the design patterns in an app experience?<\/i>\n<\/center><\/p>\n<p>\n  There are  five design patterns for apps to consider but looking through the lens of an existing application in a real-world scenario,we wanted to create an artifact that would spark inspiration for both developers and creators and showcase all the existing design patterns that apps can utilize when enhancing their experiences for foldable form factors.\n<\/p>\n<p><strong>App Feature Ideation<\/strong>\n<\/p>\n<p>\n  While brainstorming possible ideas, we had discussions around creating an application that would walkthrough the experience of using an app on foldable devices and highlighting all five design patterns through a user\u2019s perspective and providing a learning resource in a handheld format.\n<\/p>\n<p>\n  <img decoding=\"async\" width=\"1976\" height=\"1233\" src=\"https:\/\/devblogs.microsoft.com\/surface-duo\/wp-content\/uploads\/sites\/53\/2022\/02\/diagram-description-automatically-generated-2.png\" class=\"wp-image-2224\" alt=\"Six sticky notes contain ideas for sample app design\" srcset=\"https:\/\/devblogs.microsoft.com\/surface-duo\/wp-content\/uploads\/sites\/53\/2022\/02\/diagram-description-automatically-generated-2.png 1976w, https:\/\/devblogs.microsoft.com\/surface-duo\/wp-content\/uploads\/sites\/53\/2022\/02\/diagram-description-automatically-generated-2-300x187.png 300w, https:\/\/devblogs.microsoft.com\/surface-duo\/wp-content\/uploads\/sites\/53\/2022\/02\/diagram-description-automatically-generated-2-1024x639.png 1024w, https:\/\/devblogs.microsoft.com\/surface-duo\/wp-content\/uploads\/sites\/53\/2022\/02\/diagram-description-automatically-generated-2-768x479.png 768w, https:\/\/devblogs.microsoft.com\/surface-duo\/wp-content\/uploads\/sites\/53\/2022\/02\/diagram-description-automatically-generated-2-1536x958.png 1536w\" sizes=\"(max-width: 1976px) 100vw, 1976px\" \/>\n<\/p>\n<p>\n  As a team we began to list our ideas and downselect to the most relevant ones that would resonate with the overall goal of the application by having:\n<\/p>\n<ul>\n<li>\n    Common navigation across the entire app experience\n  <\/li>\n<li>\n    Storytelling through the lens of a sales representative using Microsoft Surface Duo and other foldables in a real-world setting \n  <\/li>\n<li>\n    Folding form factor use cases\n  <\/li>\n<li>\n    Bringing in productivity inside an application\n  <\/li>\n<li>\n    Showcasing the possibility of all <a href=\"https:\/\/docs.microsoft.com\/dual-screen\/introduction\">design patterns<\/a>\n  <\/li>\n<li>\n    Providing a learning resource while experiencing the app\n  <\/li>\n<\/ul>\n<p><strong>Information Architecture and User Journey<\/strong>\n<\/p>\n<p>\n  When looking for ways for creating such experiences we wore the hat of a sales representative and thought through what it takes to mimic a scenario of selling products from an inventory to customers. \n<\/p>\n<p>\n  We then mapped all the design patterns together through a common navigation by bringing in hierarchy to foster a sense of exploration in the application and the journey to place an order for the end customer.\n<\/p>\n<p><strong>Sketches<\/strong>\n<\/p>\n<p>\n  Once we mapped all the design patterns with the user journey,we were able to jump into the next phase of creating wireframes.\n<\/p>\n<p>\n  Then we began to drill into the details of the entire workflow, from the time a salesperson would search around on the map for stores to the time they would learn about the store, present a product catalog, customize a product, place an order from the inventory, and generate receipt.\n<\/p>\n<p>\n  <img decoding=\"async\" width=\"2500\" height=\"961\" src=\"https:\/\/devblogs.microsoft.com\/surface-duo\/wp-content\/uploads\/sites\/53\/2022\/02\/graphical-user-interface-application-description-2.png\" class=\"wp-image-2225\" alt=\"Wireframe mockups of app design\" srcset=\"https:\/\/devblogs.microsoft.com\/surface-duo\/wp-content\/uploads\/sites\/53\/2022\/02\/graphical-user-interface-application-description-2.png 2500w, https:\/\/devblogs.microsoft.com\/surface-duo\/wp-content\/uploads\/sites\/53\/2022\/02\/graphical-user-interface-application-description-2-300x115.png 300w, https:\/\/devblogs.microsoft.com\/surface-duo\/wp-content\/uploads\/sites\/53\/2022\/02\/graphical-user-interface-application-description-2-1024x394.png 1024w, https:\/\/devblogs.microsoft.com\/surface-duo\/wp-content\/uploads\/sites\/53\/2022\/02\/graphical-user-interface-application-description-2-768x295.png 768w, https:\/\/devblogs.microsoft.com\/surface-duo\/wp-content\/uploads\/sites\/53\/2022\/02\/graphical-user-interface-application-description-2-1536x590.png 1536w, https:\/\/devblogs.microsoft.com\/surface-duo\/wp-content\/uploads\/sites\/53\/2022\/02\/graphical-user-interface-application-description-2-2048x787.png 2048w\" sizes=\"(max-width: 2500px) 100vw, 2500px\" \/>\n<\/p>\n<p>\n  <img decoding=\"async\" width=\"2248\" height=\"1432\" src=\"https:\/\/devblogs.microsoft.com\/surface-duo\/wp-content\/uploads\/sites\/53\/2022\/02\/graphical-user-interface-description-automaticall-2.png\" class=\"wp-image-2226\" alt=\"More wireframe mockups of app design\" srcset=\"https:\/\/devblogs.microsoft.com\/surface-duo\/wp-content\/uploads\/sites\/53\/2022\/02\/graphical-user-interface-description-automaticall-2.png 2248w, https:\/\/devblogs.microsoft.com\/surface-duo\/wp-content\/uploads\/sites\/53\/2022\/02\/graphical-user-interface-description-automaticall-2-300x191.png 300w, https:\/\/devblogs.microsoft.com\/surface-duo\/wp-content\/uploads\/sites\/53\/2022\/02\/graphical-user-interface-description-automaticall-2-1024x652.png 1024w, https:\/\/devblogs.microsoft.com\/surface-duo\/wp-content\/uploads\/sites\/53\/2022\/02\/graphical-user-interface-description-automaticall-2-768x489.png 768w, https:\/\/devblogs.microsoft.com\/surface-duo\/wp-content\/uploads\/sites\/53\/2022\/02\/graphical-user-interface-description-automaticall-2-1536x978.png 1536w, https:\/\/devblogs.microsoft.com\/surface-duo\/wp-content\/uploads\/sites\/53\/2022\/02\/graphical-user-interface-description-automaticall-2-2048x1305.png 2048w\" sizes=\"(max-width: 2248px) 100vw, 2248px\" \/>\n<\/p>\n<p>\n  Finally, with these wireframes we were able to seek feedback amongst the team members to see if the entire journey of a sales representative made a good use case for showcasing all five design patterns inside a single experience. \n<\/p>\n<p>\n  With iterations and feedback, we lead into the final phase of design \u2013 mocking up the experience and handing off to development.\n<\/p>\n<p><strong>Design and Solution <\/strong>\n<\/p>\n<p>\n  In the final phase of design, we began to drill into the details of design by creating high fidelity assets. We did this with the help of the <a href=\"http:\/\/aka.ms\/SurfaceDuoDesign\">Surface Duo Design Kit<\/a> that we released on the Figma community.\n<\/p>\n<p>\n  While mocking up the experience we focused mainly on the dark theme UI to reflect the guitar store and the love that developers showed towards the color system. Following are some of the interactions that highlight the design patterns in the dual-screen experience app that gives a real-world picture of how each pattern plays a unique role in serving productivity on-the-go.\n<\/p>\n<p>\n  <img decoding=\"async\" width=\"1000\" height=\"700\" src=\"https:\/\/devblogs.microsoft.com\/surface-duo\/wp-content\/uploads\/sites\/53\/2022\/02\/a-picture-containing-text-indoor-description-aut-2.gif\" class=\"wp-image-2227\" alt=\"Animation of Surface Duo with a map control\" \/>\n<\/p>\n<p><em>Extended Canvas<\/em>\n<\/p>\n<p>\n  The <a href=\"https:\/\/docs.microsoft.com\/dual-screen\/design\/extended-canvas\">extended canvas<\/a> design pattern is used to provide a map experience that gives your app more screen real estate rather than constricting it to one screen or another.\n<\/p>\n<p>\n  <img decoding=\"async\" width=\"1502\" height=\"1080\" src=\"https:\/\/devblogs.microsoft.com\/surface-duo\/wp-content\/uploads\/sites\/53\/2022\/02\/a-picture-containing-text-electronics-black-des-2.gif\" class=\"wp-image-2228\" alt=\"Animation of Surface Duo sample app\" \/>\n<\/p>\n<p><em>Dual View<\/em>\n<\/p>\n<p>\n  The <a href=\"https:\/\/docs.microsoft.com\/dual-screen\/design\/dual-view\">Dual view<\/a> design pattern is used to give two different views of the same data. Where one screen shows a list of stores on the map,the other screen shows the same list of stores in a list representation.\n<\/p>\n<p>\n  <img decoding=\"async\" width=\"1502\" height=\"1080\" src=\"https:\/\/devblogs.microsoft.com\/surface-duo\/wp-content\/uploads\/sites\/53\/2022\/02\/shape-description-automatically-generated-with-me-2.gif\" class=\"wp-image-2229\" alt=\"Animation of Surface Duo sample app\" \/>\n<\/p>\n<p><em>List Detail<\/em>\n<\/p>\n<p>\n  The <a href=\"https:\/\/docs.microsoft.com\/dual-screen\/design\/list-detail\">List detail<\/a> design pattern is used to showcase a list and a detailed view of a particular store providing more context if the salesperson wishes to pull up the contact details or learn more about the store.\n<\/p>\n<p>\n  <img decoding=\"async\" width=\"1502\" height=\"1080\" src=\"https:\/\/devblogs.microsoft.com\/surface-duo\/wp-content\/uploads\/sites\/53\/2022\/02\/a-picture-containing-text-electronics-descriptio-1.gif\" class=\"wp-image-2234\" alt=\"Animation of Surface Duo sample app\" \/>\n<\/p>\n<p><em>Two Page<\/em>\n<\/p>\n<p>\n  The <a href=\"https:\/\/docs.microsoft.com\/dual-screen\/design\/two-page\">Two page<\/a> design pattern is used to showcase a brochure-like reading experience to the salesperson when they are communicating with the store person in charge. Two displays for an application provide an ergonomic use case when it comes to providing a paging experience.\n<\/p>\n<p><strong><img decoding=\"async\" width=\"1502\" height=\"1080\" src=\"https:\/\/devblogs.microsoft.com\/surface-duo\/wp-content\/uploads\/sites\/53\/2022\/02\/graphical-user-interface-application-description.gif\" class=\"wp-image-2236\" alt=\"Animation of Surface Duo sample app\" \/><\/strong>\n<\/p>\n<p><em>Companion Pane<\/em>\n<\/p>\n<p>\n  The <a href=\"https:\/\/docs.microsoft.com\/dual-screen\/design\/companion-pane\">Companion Pane<\/a> design pattern enables customization of the product (here in the app &#8211; guitars) while the salesperson places orders for the store that they visited. Where one pane\/screen is used to look at the product and another screen to allow room for customization.\n<\/p>\n<p>\n  Finally, with all the mockups and interaction design, design files were handed off to the developers on the team. \n<\/p>\n<p><strong>Development Process <\/strong>\n<\/p>\n<p>\n  Before the implementation of the UI designs started, we had some team discussions regarding architecture and navigation. We split the flow into different sections identified four Activities, each containing multiple Fragments.\n<\/p>\n<p>\n  <img decoding=\"async\" width=\"649\" height=\"661\" src=\"https:\/\/devblogs.microsoft.com\/surface-duo\/wp-content\/uploads\/sites\/53\/2022\/02\/graphical-user-interface-description-automaticall-4.png\" class=\"wp-image-2237\" alt=\"Animation of Surface Duo sample app\" srcset=\"https:\/\/devblogs.microsoft.com\/surface-duo\/wp-content\/uploads\/sites\/53\/2022\/02\/graphical-user-interface-description-automaticall-4.png 649w, https:\/\/devblogs.microsoft.com\/surface-duo\/wp-content\/uploads\/sites\/53\/2022\/02\/graphical-user-interface-description-automaticall-4-295x300.png 295w, https:\/\/devblogs.microsoft.com\/surface-duo\/wp-content\/uploads\/sites\/53\/2022\/02\/graphical-user-interface-description-automaticall-4-24x24.png 24w, https:\/\/devblogs.microsoft.com\/surface-duo\/wp-content\/uploads\/sites\/53\/2022\/02\/graphical-user-interface-description-automaticall-4-48x48.png 48w\" sizes=\"(max-width: 649px) 100vw, 649px\" \/>\n<\/p>\n<p><em>Application flow split into four Activities<\/em>\n<\/p>\n<p>\n  With all design patterns showcased inside the Main Activity, we ended up having the most Fragments in this section which needed their transactions handled. Depending on the design pattern, some Fragments needed to be displayed on the whole display area, while others required two individual Fragments side-by-side in case of a foldable\/dual-screen device. We thought that for this application the design patterns would look best if implemented as follows:\n<\/p>\n<ul>\n<li>\n    One Fragment on both screens \u2013 Extended Canvas (showing a larger view of the map), Two Page (handling the swipe between different pages)\n  <\/li>\n<li>\n    Two different Fragments side-by-side \u2013 List-Detail, Dual View, Companion Pane\n  <\/li>\n<\/ul>\n<p>\n  To achieve this faster, we used the <a href=\"https:\/\/docs.microsoft.com\/dual-screen\/android\/api-reference\/dualscreen-library\/navigation-component\/\">Foldable Navigation Component<\/a> and ended up with several navigation-graphs, which fit perfectly with the Bottom Navigation View because the menu items represented the start destinations for the main navigation-graph.\n<\/p>\n<p>\n  The next step was transforming the UI designs into Android components, taking it one feature at a time. To have it look good on various screen sizes and resolutions, we used ConstraintLayout and its helpers for complex layouts and continuously improved them by testing the application on multiple emulators and devices. For example, in the Launch screen we took advantage of the Guideline percentages, having each component take up as much as a specific percentage of the display area it is rendered on, and used Groups to handle the visibility of multiple items. Therefore, instead of using fixed width and height dimensions, they end up relative to the screen size they are displayed on.\n<\/p>\n<p>\n  <img decoding=\"async\" width=\"729\" height=\"747\" src=\"https:\/\/devblogs.microsoft.com\/surface-duo\/wp-content\/uploads\/sites\/53\/2022\/02\/graphical-user-interface-description-automaticall-5.png\" class=\"wp-image-2238\" alt=\"Graphical user interface\n\nDescription automatically generated\" srcset=\"https:\/\/devblogs.microsoft.com\/surface-duo\/wp-content\/uploads\/sites\/53\/2022\/02\/graphical-user-interface-description-automaticall-5.png 729w, https:\/\/devblogs.microsoft.com\/surface-duo\/wp-content\/uploads\/sites\/53\/2022\/02\/graphical-user-interface-description-automaticall-5-293x300.png 293w, https:\/\/devblogs.microsoft.com\/surface-duo\/wp-content\/uploads\/sites\/53\/2022\/02\/graphical-user-interface-description-automaticall-5-24x24.png 24w, https:\/\/devblogs.microsoft.com\/surface-duo\/wp-content\/uploads\/sites\/53\/2022\/02\/graphical-user-interface-description-automaticall-5-48x48.png 48w\" sizes=\"(max-width: 729px) 100vw, 729px\" \/>\n<\/p>\n<p><em>Launch Activity layout using Guideline percentages<\/em>\n<\/p>\n<p>\n  The idea of having more than one Fragment displayed at the same time comes with another responsibility \u2013 handling synchronization between user interactions and their results. We used an MVVM approach &#8211; the ViewModel saves the states and Fragments have observers attached to LiveData changes and update the UI in real time. For example, in the List-Detail design pattern each item selection triggers changes to the Details Fragment. In a similar way, the Dual View has two different representations of the same data on both sides so a single point of truth should be used, while the Companion Pane connects the controls from one screen to the result on the other one.\n<\/p>\n<p>\n  <img decoding=\"async\" width=\"1502\" height=\"1080\" src=\"https:\/\/devblogs.microsoft.com\/surface-duo\/wp-content\/uploads\/sites\/53\/2022\/02\/graphical-user-interface-application-description-1.gif\" class=\"wp-image-2240\" alt=\"Animation of Surface Duo sample app\" \/>\n<\/p>\n<p><em>Interaction between two visible Fragments<\/em>\n<\/p>\n<h2>Resources and feedback<\/h2>\n<p>\n  The\u00a0<a href=\"http:\/\/aka.ms\/SurfaceDuoDesign\">Surface Duo Design Kit<\/a>\u00a0is available on\u00a0<a href=\"https:\/\/www.figma.com\/\">Figma<\/a>\u00a0at the\u00a0<a href=\"https:\/\/www.figma.com\/@microsoft\">Microsoft Design Page<\/a>.\n<\/p>\n<p>\n  While we are expanding the Design Kit, we would love to hear from you about your experiences designing dual-screen experiences for Surface Duo. Please reach out using our\u00a0<a href=\"http:\/\/aka.ms\/SurfaceDuoSDK-Feedback\">feedback forum<\/a>\u00a0or find us on Twitter\u00a0<a href=\"https:\/\/twitter.com\/surfaceduodev\">@surfaceduodev<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hello designers, This week we are excited to share with you our journey that inspires, educates, and showcases real world usage of various design patterns and provides designers a sense of exploring foldables with working examples of how to make use of the dual-screen\/folding form factors in different ways when an application is spanning both [&hellip;]<\/p>\n","protected":false},"author":49635,"featured_media":2230,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[710],"tags":[709,31,46],"class_list":["post-2222","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-surface-duo-design","tag-design","tag-dual-screen-development","tag-surface-duo"],"acf":[],"blog_post_summary":"<p>Hello designers, This week we are excited to share with you our journey that inspires, educates, and showcases real world usage of various design patterns and provides designers a sense of exploring foldables with working examples of how to make use of the dual-screen\/folding form factors in different ways when an application is spanning both [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/surface-duo\/wp-json\/wp\/v2\/posts\/2222","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\/49635"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/surface-duo\/wp-json\/wp\/v2\/comments?post=2222"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/surface-duo\/wp-json\/wp\/v2\/posts\/2222\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/surface-duo\/wp-json\/wp\/v2\/media\/2230"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/surface-duo\/wp-json\/wp\/v2\/media?parent=2222"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/surface-duo\/wp-json\/wp\/v2\/categories?post=2222"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/surface-duo\/wp-json\/wp\/v2\/tags?post=2222"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}