OSDN Git Service

revisions to the app structure design guide
authorsmain@google.com <smain@google.com>
Sat, 28 Jun 2014 00:05:32 +0000 (17:05 -0700)
committersmain@google.com <smain@google.com>
Sat, 28 Jun 2014 01:43:50 +0000 (18:43 -0700)
Change-Id: I15e68e454180b848db81791350ba7985817c0930

docs/html/design/media/wear/2d_picker_indicated.png
docs/html/design/media/wear/appstructuresample.png
docs/html/design/media/wear/biggesture.png
docs/html/design/wear/structure.jd

index d31c099..eee5305 100644 (file)
Binary files a/docs/html/design/media/wear/2d_picker_indicated.png and b/docs/html/design/media/wear/2d_picker_indicated.png differ
index 0e5b86f..c80fdff 100644 (file)
Binary files a/docs/html/design/media/wear/appstructuresample.png and b/docs/html/design/media/wear/appstructuresample.png differ
index 6c6f0cd..a062561 100644 (file)
Binary files a/docs/html/design/media/wear/biggesture.png and b/docs/html/design/media/wear/biggesture.png differ
index 67b218a..a7b5232 100644 (file)
@@ -1,31 +1,39 @@
 page.title=App Structure for Android Wear
 @jd:body
 
+<style>
+ol.inline-list {
+  margin:0 0 20px 0;
+}
+ol.inline-list li {
+display: block;
+float:left;
+width: 162px;
+margin: 0 10px 20px 20px;
+}
+</style>
 
 <p>Users are used to tapping icons to launch apps. Android Wear is different. A typical Wear app adds a card to the stream at a contextually relevant moment. It might have a button that opens a full screen view for a fast micro interaction, like below, but it just as well might not.
 </p>
 
-<img src="{@docRoot}design/media/wear/appstructuresample.png" alt="" />
-
 <p>These are the building blocks, ordered by simplicity. You can use one of them or some of them, but we strongly recommend not building apps the user has to launch and quit before thinking really hard about how you could react to a specific location, activity, time of day, or something happening in the cloud.</p>
 
 
 <ul>
   <li><strong>Contextual card in the stream</strong>:
   <ul>
-    <li><a href="#Bridged"><strong>Bridged notifications</strong></a> are pushed to the wearable from the connected handheld such as new message notifications, using standard Android notifications. These require little or no code on the wearable.
-    <li><a href="#Contextual"><strong>Contextual notifications</strong></a> are generated locally on the wearable and appear at contextually relevant moments such as an exercise card that appears when you’re going on a run. You can do more with this kind of card than with a notification bridged from the handheld.
+    <li><a href="#Bridged"><strong>Bridged notifications</strong></a>, such as new message notifications, are pushed to the wearable from the connected handheld using standard Android notifications. They require very little or no Wear-specific code.
+    <li><a href="#Contextual"><strong>Contextual notifications</strong></a>, such as an exercise card that appears when you begin running, are generated locally on the wearable and appear at contextually relevant moments. You can do more with this kind of card than with a notification bridged from the handheld.
   </ul>
   </li>
   <li><strong>Full screen UI app</strong>:
   <ul>
-    <li><a href="#2DPicker"><strong>2D Picker</strong></a> is design pattern that allows the user to select from a set of items, such as choosing artists and then albums. We recommend using this pre-built component from the SDK whenever relevant.
-    <li><a href="#Custom"><strong>Custom layouts</strong></a> are also possible where apps need to extend beyond the basic card/stream metaphor.</li>
+    <li><a href="#2DPicker"><strong>2D Picker</strong></a> is design pattern that allows the user to select from a set of items, such as to select an artist then an album. We recommend using this pre-built component from the SDK whenever relevant.
+    <li><a href="#Custom"><strong>Custom layouts</strong></a> are also possible where apps need to extend beyond the basic card/stream metaphor, such as to present a graph or map.</li>
   </ul>
   </li>
 </ul>
 
-<p>Many applications will consist of a combination of these views, possibly with connections between them. For example, a contextual card may have an action that launches a more immersive experience. Inversely, an immersive experience may result in a card being added to the stream.</p>
 
 
 <h2 id="Bridged">Bridged Notifications</h2>
@@ -49,13 +57,21 @@ page.title=App Structure for Android Wear
 <img src="{@docRoot}design/media/wear/context_workout.png" width="323" height="147" style="float:right;margin:0 0 20px 40px;clear:right" alt="" />
 <img src="{@docRoot}design/media/wear/context_lights.png" width="323" height="147" style="float:right;margin:0 0 20px 40px;clear:right" alt="" />
 
-<p>This is what Android Wear does best; showing users information just when they need it.</p>
+<p>This is what Android Wear does best: showing users information and functionality just when they need it.</p>
 
-<p>Here’s how it works: Your app knows when it is relevant for the user, and when it happens, you trigger a contextual notification. Maybe you’re building a running app that’s relevant when the user is running. Maybe it’s a museum guide that’s relevant when the user is visiting a particular museum. Check out the design principles for more on thinking about your app contextually. </p>
+<p>Here’s how it works: Your app knows when it is relevant for the user. When the appropriate event occurs, the app triggers a notification. Maybe you’re building a running app that’s relevant when the user is running. Maybe it’s a museum guide that’s relevant when the user is visiting your museum. Check out the <a href="{@docRoot}design/wear/principles.html">design principles</a> for more about how to make your app contextual. </p>
 
 <p>Getting contextual triggering right is one of the most impactful things you can do to craft a great user experience. </p>
 
-<p>The easiest way to do this is to use standard templates for Android notifications. If you decide to make your own ActivityView, we strongly recommend you take a look at the <a href="{@docRoot}design/wear/style.html">Style</a> guide to make sure you stay consistent with the rest of the device. </p>
+<p>The easiest way to do this is to use standard templates for Android notifications. But you can also make your own layout from scratch with an <a href="{@docRoot}guide/components/activities.html">activity</a> inside a card. If you decide to do this, we strongly recommend you take a look at the <a href="{@docRoot}design/wear/style.html">Style</a> guide to make sure you stay consistent with the rest of the device. </p>
+
+
+<a class="notice-developers" style="clear:none" href="{@docRoot}training/wearables/apps/layouts.html">
+  <div>
+    <h3>Developer Docs</h3>
+    <p>Creating Custom Layouts</p>
+  </div>
+</a>
 
 <p>Don’t forget to test your triggering thoroughly. Triggering too often can be so annoying that users might end up blocking all your notifications. </p>
 
@@ -63,7 +79,7 @@ page.title=App Structure for Android Wear
 
 <h2 id="2DPicker">2D Picker</h2>
 
-<p>The 2D Picker design pattern (available as the <a href="{@docRoot}training/wearables/apps/layouts.html#UiLibrary">GridViewPager component</a>) is useful for showing a range of options or asking a user to make a quick selection. Google search results on Android Wear are a great example of the GridViewPager pattern in action.</p>
+<p>The 2D Picker design pattern (available as the <a href="{@docRoot}training/wearables/apps/layouts.html#UiLibrary"><code>GridViewPager</code> component</a>) is useful for showing options in a list. Google search results are a great example of this pattern in action.</p>
 
 <img src="{@docRoot}design/media/wear/1D_picker.png" alt="" width="499px" />
 <p class="img-caption">This pattern can be used to present a single vertical list, or a “1D Picker”</p>
@@ -72,28 +88,30 @@ page.title=App Structure for Android Wear
 <p class="img-caption">It can also be used as a 2D matrix of options, as a way of presenting categorized options.</p>
 
 
-<img src="{@docRoot}design/media/wear/2d_picker_indicated.png" alt="" width="760px" />
-<p class="img-caption">Navigation should be vertical-then-horizontal, not horizontal-then-vertical, and limit the the vertical set to around five cards.</p>
-
 
 <h3>Actions</h3>
-<p>For actions on each cards, use the <a href="{@docRoot}design/wear/patterns.html#Actions">Action cards pattern</a>.</p>
+<p>For actions on each card, use the <a href="{@docRoot}design/wear/patterns.html#Actions">Action cards pattern</a>.</p>
 
+<h3>Making it fast</h3>
 
-<h3>Exiting</h3>
-<p>2D Picker should be automatically dismissed when a selection is made. It may also be exited by swiping back down on the first card, or by swiping left to right on a leftmost card.</p>
+<div class="figure" style="width:350px">
+<img src="{@docRoot}design/media/wear/2d_picker_indicated.png" alt="" width="350" />
+<p class="img-caption">Navigation should be vertical-then-horizontal, not horizontal-then-vertical, and limit the the vertical set to about five cards.</p>
+</div>
 
-<h3>Making it fast</h3>
-<p>A few of our favorite tips on how to make the 2D picker really fast for your users:</p>
+<p>Here are a few of our favorite tips about how to make the 2D picker really fast for your users:</p>
 <ul>
 <li>Minimize the number of cards</li>
 <li>Show the most popular card at the top </li>
 <li>Keep the cards extremely simple</li>
 <li>Optimize for speed over customization</li>
-
 </ul>
 
 
+<h3>Exiting</h3>
+<p>Your app should dismiss the 2D picker when the user makes a selection. Users should also be able to exit by swiping the first card down, or swiping left to right on a left-most card.</p>
+
+
 
 <h2 id="Custom">Breaking out of the card (with custom layouts)</h2>
 
@@ -104,26 +122,39 @@ page.title=App Structure for Android Wear
   </div>
 </a>
 
-<p>There are some things you can’t do on a card. Swiping in many directions on a map or a joystick are a few examples. In those cases it might be good idea to momentarily go full screen.</p>
+<p>There are some things you can’t do on a card. Swiping in many directions on a map or controlling a game with a joystick are a couple examples. In those cases it might be good idea to <em>momentarily</em> go full screen.</p>
 
-<img src="{@docRoot}design/media/wear/customlayout.png" alt="" width="760px" />
+<p>A typical user experience with a full screen app on Android Wear looks like this:</p>
+
+<img src="{@docRoot}design/media/wear/appstructuresample.png" alt="" />
+
+<ol class="inline-list">
+  <li>Your contextual card enters the stream.
+  <li>The user taps the card action.
+  <li>A full screen activity opens for a micro interaction.
+  <li style="margin-right:0">The activity quits and the user returns to the stream.
+</ol>
 
 <h3>When to go full screen</h3>
-<p>We highly recommend only going full screen when you can’t do what you want on a card, and quickly exit back to the stream the moment you’re done. That way your app will feel like an integrated part of the system.</p>
+<p>We highly recommend going full screen only when you can’t do what you want on a card, and quickly exit back to the stream the moment the user is done with the micro interaction. This will make your app will feel like an integrated part of the system. Android Wear itself uses full screen for voice replies and the stopwatch.</p>
+
+<h3>Making it distinct</h3>
 
-<h3>Be distinct</h3>
-<p>Your full screen design shouldn’t look too much like the card stream or it could confuse users. The 2D picker is always available if you need a card-like UI.</p>
+<p>Your full screen design shouldn’t look too much like the card stream as it could confuse users. If you do need a card-like UI, the <a
+href="#2DPicker">2D picker</a> is always available.</p>
 
 <h3>Automatically exiting</h3>
-<p>Many devices don’t have back or home buttons, so exiting is your responsibility as the app designer. Here’s a few examples of natural exits:</p>
+
+<p>Many devices don’t have back or home buttons, so exiting is something you have to think about. Here are a few examples of natural ways to exit:</p>
 <ul>
-  <li>A map that asks the user to drop a pin should exit when it happens</li>
-  <li>A short game can exit when the game finishes</li>
+  <li>A map that asks the user to drop a pin should exit when the pin is dropped.</li>
+  <li>A short game can exit when the game finishes.</li>
   <li>A drawing app can finish after 5 seconds of inactivity.</li>
 </ul>
 
 <h3>Manually exiting</h3>
-<p>Even with logical exit points like these, some cases may exist where the user may want to immediately exit. This may be common in apps that are used for a longer while. In all cases, the developer should present the option to quit the app on long press using 
-<a href="{@docRoot}training/wearables/apps/layouts.html#UiLibrary"><code>DismissOverlayView</code></a>. Your design should reserve long press for the sole purpose of prompting to quit.</p>
+
+<p>Even with logical exit points like these, some cases may exist where the user may want to immediately exit. This may be common in apps that are used for a longer while. In all cases, you should treat long-press as the user's intent to exit, using
+<a href="{@docRoot}training/wearables/apps/layouts.html#UiLibrary"><code>DismissOverlayView</code></a>.</p>