*以下内容翻译自android wear的官方教程,本人水平有限,如有错误欢迎指出
home
以下正文
默认情况下,用户从左向右滑动就可以退出Android Wear Activity。如果app包括了水平滑动的内容,用户需要滑动到左边的边界处再向右滑来退出。
为了更佳的浸入式体验,你需要app可以向任意方向滑动而不退出app。你可以屏蔽左滑退出的默认设置,这么做了之后,你必须实现 DismissOverlayView
来长按退出你的app。并且你要在用户第一次使用你的app的时候告诉TA们需要用长按来退出。
关于设计用于退出的Android Wear activities,你可以查阅 Breaking out of the card
屏蔽滑动退出手势
如果你的app与这个手势有冲突,你可以拓展默认的主题(theme),然后设置android:windowSwipeToDismiss为false
<resources>
<style name="AppTheme" parent="@android:style/Theme.DeviceDefault">
<item name="android:windowSwipeToDismiss">false</item>
</style>
</resources>
然后在AndroidManifest.xml文件中设置这个主题(theme),更准确的说是让<application>标签的android:theme属性设置成上面的主题.
<application android:theme="@style/AppTheme">
如果你完成了上面的步骤,一定一定要记得完成接下来的步骤!!!
实现长按退出
首先你要确保 DismissOverlayView
全屏且覆盖在所有的view的上面。
下面是一个示范
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="match_parent"
android:layout_width="match_parent">
<!-- 把其他view安在这里 -->
<android.support.wearable.view.DismissOverlayView
android:id="@+id/dismiss_overlay"
android:layout_height="match_parent"
android:layout_width="match_parent"/>
<FrameLayout>
在你的activity当中,你可以获取 <DismissOverlayView>
元素,然后设置一些介绍文本,这些文本将会在用户第一次使用你的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);
// 获取 DismissOverlayView 元素
mDismissOverlay = (DismissOverlayView)
findViewById(R.id.dismiss_overlay);
mDismissOverlay.setIntroText(R.string.long_press_intro);
mDismissOverlay.showIntroIfNecessary();
// 设置手势探测器(gesture detector)
mDetector = new GestureDetector(this, new SimpleOnGestureListener(){
public void onLongPress(MotionEvent ev) {
mDismissOverlay.show();
}
});
}
// 捕获长按事件
@Override
public boolean onTouchEvent(MotionEvent ev) {
return mDetector.onTouchEvent(ev) || super.onTouchEvent(ev);
}
}
当系统发现一个长按手势时, <DismissOverlayView>
元素将会显示一个Exit按钮,用户按一下之后你的activity就退出了