编写: roya 原文:https://developer.android.com/training/wearables/ui/exit.html
默认情况下,用户可以从左到右划动退出Android Wear activities。如果app含有水平水滚的内容,用户首先滚动至内容边缘然后再次从左到又滑动可以退出app。
对于更加沉浸的体验,比如在app中可以滚动地图到任何位置,你可以在你的app中禁用滑动退出手势,然而,如果你禁用了这个,你必须使用Wearable UI库中的 DismissOverlayView 类实现long-press-to-dismiss UI让用户退出你的app。你当然也需要在用户第一次运行你的app的时候提醒用户可以长按退出app。
更多关于退出Android Wear activities的设计指南,请查看Breaking out of the card。
如果你的app要干涉滑动退出手势的用户交互模型,你在你的app中可以禁用它。为了在你的app中禁用滑动退出手势,继承默认theme然后设置 android:windowSwipeToDismiss 属性为 false:
<style name="AppTheme" parent="Theme.DeviceDefault">
<item name="android:windowSwipeToDismiss">false</item>
</style>
如果你禁用了这个手势,你需要实现长按退出UI元素以让用户可以退出你的app,类似下面章节的描述:
要在你的activity中使用 DissmissOverlayView 类,添加这个元素到你的layout解释文件,让它全屏且覆盖在所有其他view上,例子:
<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>
在你的activity中,取得 DismissOverlayView 元素然后设置一些提示文字。这些文字会在用户第一次运行你的app时提醒用户可以使用长按手势退出app。接着用一个 GestureDetector 探测长按动作:
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);
}
}
当系统发现长按动作, DismissOverlayView 会显示一个退出按钮,当用户点击它,你的activity会被终止。