*以下內(nèi)容翻譯自android wear的官方教程,本人水平有限,如有錯誤歡迎指出
home
以下正文
默認(rèn)情況下,用戶從左向右滑動就可以退出Android Wear Activity。如果app包括了水平滑動的內(nèi)容,用戶需要滑動到左邊的邊界處再向右滑來退出。
為了更佳的浸入式體驗,你需要app可以向任意方向滑動而不退出app。你可以屏蔽左滑退出的默認(rèn)設(shè)置,這么做了之后,你必須實現(xiàn) DismissOverlayView
來長按退出你的app。并且你要在用戶第一次使用你的app的時候告訴TA們需要用長按來退出。
關(guān)于設(shè)計用于退出的Android Wear activities,你可以查閱 Breaking out of the card
屏蔽滑動退出手勢
如果你的app與這個手勢有沖突,你可以拓展默認(rèn)的主題(theme),然后設(shè)置android:windowSwipeToDismiss為false
<resources>
<style name="AppTheme" parent="@android:style/Theme.DeviceDefault">
<item name="android:windowSwipeToDismiss">false</item>
</style>
</resources>
然后在AndroidManifest.xml文件中設(shè)置這個主題(theme),更準(zhǔn)確的說是讓<application>標(biāo)簽的android:theme屬性設(shè)置成上面的主題.
<application android:theme="@style/AppTheme">
如果你完成了上面的步驟,一定一定要記得完成接下來的步驟!?。?/p>
實現(xiàn)長按退出
首先你要確保 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當(dāng)中,你可以獲取 <DismissOverlayView>
元素,然后設(shè)置一些介紹文本,這些文本將會在用戶第一次使用你的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();
// 設(shè)置手勢探測器(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);
}
}
當(dāng)系統(tǒng)發(fā)現(xiàn)一個長按手勢時, <DismissOverlayView>
元素將會顯示一個Exit按鈕,用戶按一下之后你的activity就退出了