Update sample snippets in 2d-picker. bug: 21660558 bug: 19059844 Change-Id: Ibc156a21329d1549f6d33ed75130f7b6edda85b2
119 lines
4.6 KiB
Plaintext
119 lines
4.6 KiB
Plaintext
page.title=Exiting Full-Screen Activities
|
|
|
|
@jd:body
|
|
|
|
<div id="tb-wrapper">
|
|
<div id="tb">
|
|
<h2>This lesson teaches you to</h2>
|
|
<ol>
|
|
<li><a href="#disable-swipe">Disable the Swipe-To-Dismiss Gesture</a></li>
|
|
<li><a href="#long-press">Implement the Long Press to Dismiss Pattern</a></li>
|
|
</ol>
|
|
<h2>You should also read</h2>
|
|
<ul>
|
|
<li><a href="{@docRoot}design/wear/index.html">Android Wear Design Principles</a></li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<p>By default, users exit Android Wear activities by swiping from left to right. If the app
|
|
contains horizontally scrollable content, users first have to navigate to the edge of the
|
|
content and then swipe again from left to right to exit the app.</p>
|
|
|
|
<p>For more immersive experiences, like an app that can scroll a map in any direction, you can
|
|
disable the swipe to exit gesture in your app. However, if you disable it, you must implement
|
|
the long-press-to-dismiss UI pattern to let users exit your app using the
|
|
<a href="{@docRoot}reference/android/support/wearable/view/DismissOverlayView.html"><code>DismissOverlayView</code></a>
|
|
class from the Wearable UI Library. You must also inform your users the first time they run your app
|
|
that they can exit using a long press.</p>
|
|
|
|
<p>For design guidelines about exiting Android Wear activities, see
|
|
<a href="{@docRoot}design/wear/structure.html#Custom">Breaking out of the card</a>.</p>
|
|
|
|
|
|
<h2 id="disable-swipe">Disable the Swipe-To-Dismiss Gesture</h2>
|
|
|
|
<p>If the user interaction model of your app interferes with the swipe-to-dismiss gesture,
|
|
you can disable it for your app. To disable the swipe-to-dismiss gesture in your app, extend
|
|
the default theme and set the <code>android:windowSwipeToDismiss</code> attribute to
|
|
<code>false</code>:</p>
|
|
|
|
<pre>
|
|
<style name="AppTheme" parent="Theme.DeviceDefault">
|
|
<item name="android:windowSwipeToDismiss">false</item>
|
|
</style>
|
|
</pre>
|
|
|
|
<p>If you disable this gesture, you must implement the long-press-to-dismiss UI pattern to let users
|
|
exit your app, as described in the next section.</p>
|
|
|
|
|
|
<h2 id="long-press">Implement the Long Press to Dismiss Pattern</h2>
|
|
|
|
<p>To use the
|
|
<a href="{@docRoot}reference/android/support/wearable/view/DismissOverlayView.html"><code>DismissOverlayView</code></a>
|
|
class in your activity, add this element to your layout definition such that it covers the whole
|
|
screen and is placed above all other views.</p>
|
|
|
|
<p>The following example shows how to add the
|
|
<a href="{@docRoot}reference/android/support/wearable/view/DismissOverlayView.html"><code><DismissOverlayView></code></a>
|
|
element:</p>
|
|
|
|
<pre>
|
|
<FrameLayout
|
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
|
android:layout_height="match_parent"
|
|
android:layout_width="match_parent">
|
|
|
|
<!-- other views go here -->
|
|
|
|
<android.support.wearable.view.DismissOverlayView
|
|
android:id="@+id/dismiss_overlay"
|
|
android:layout_height="match_parent"
|
|
android:layout_width="match_parent"/>
|
|
<FrameLayout>
|
|
</pre>
|
|
|
|
<p>In your activity, obtain the
|
|
<a href="{@docRoot}reference/android/support/wearable/view/DismissOverlayView.html"><code><DismissOverlayView></code></a>
|
|
element and set some introductory text. This text is shown to users the first time they run your app
|
|
to inform them that they can exit the app using a long press gesture. Then use a
|
|
<a href="{@docRoot}reference/android/view/GestureDetector.html"><code>GestureDetector</code></a>
|
|
to detect a long press:</p>
|
|
|
|
<pre>
|
|
public class WearActivity extends Activity {
|
|
|
|
private DismissOverlayView mDismissOverlay;
|
|
private GestureDetector mDetector;
|
|
|
|
public void onCreate(Bundle savedState) {
|
|
super.onCreate(savedState);
|
|
setContentView(R.layout.wear_activity);
|
|
|
|
// Obtain the DismissOverlayView element
|
|
mDismissOverlay = (DismissOverlayView) findViewById(R.id.dismiss_overlay);
|
|
mDismissOverlay.setIntroText(R.string.long_press_intro);
|
|
mDismissOverlay.showIntroIfNecessary();
|
|
|
|
// Configure a gesture detector
|
|
mDetector = new GestureDetector(this, new SimpleOnGestureListener() {
|
|
public void onLongPress(MotionEvent ev) {
|
|
mDismissOverlay.show();
|
|
}
|
|
});
|
|
}
|
|
|
|
// Capture long presses
|
|
@Override
|
|
public boolean onTouchEvent(MotionEvent ev) {
|
|
return mDetector.onTouchEvent(ev) || super.onTouchEvent(ev);
|
|
}
|
|
}
|
|
</pre>
|
|
|
|
<p>When the system detects a long press gesture, the
|
|
<a href="{@docRoot}reference/android/support/wearable/view/DismissOverlayView.html"><code><DismissOverlayView></code></a>
|
|
element shows an <strong>Exit</strong> button, which terminates your activity if the user presses
|
|
it.</p> |