This reverts commit 6ee2ca2f1e24d27c7a1e2430ad0272ef9f921a4a. Change-Id: I07a196ca1e5ae827a77c9a17ddc90d8e14129f67
110 lines
4.0 KiB
Plaintext
110 lines
4.0 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
|
|
<code>DismissOverlayView</code> 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 <code>DissmissOverlayView</code> 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.
|
|
For example:</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 <code>DismissOverlayView</code> 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 <code>GestureDetector</code> 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, <code>DismissOverlayView</code> shows an
|
|
<strong>Exit</strong> button, which terminates your activity if the user presses it.</p> |