*以下內(nèi)容翻譯自android wear的官方教程玖院,本人水平有限,如有錯(cuò)誤歡迎指出
home
以下正文
默認(rèn)情況下,用戶(hù)從左向右滑動(dòng)就可以退出Android Wear Activity。如果app包括了水平滑動(dòng)的內(nèi)容宁脊,用戶(hù)需要滑動(dòng)到左邊的邊界處再向右滑來(lái)退出。
為了更佳的浸入式體驗(yàn)贤姆,你需要app可以向任意方向滑動(dòng)而不退出app朦佩。你可以屏蔽左滑退出的默認(rèn)設(shè)置,這么做了之后庐氮,你必須實(shí)現(xiàn) DismissOverlayView
來(lái)長(zhǎng)按退出你的app。并且你要在用戶(hù)第一次使用你的app的時(shí)候告訴TA們需要用長(zhǎng)按來(lái)退出宋彼。
關(guān)于設(shè)計(jì)用于退出的Android Wear activities弄砍,你可以查閱 Breaking out of the card
屏蔽滑動(dòng)退出手勢(shì)
如果你的app與這個(gè)手勢(shì)有沖突,你可以拓展默認(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è)置這個(gè)主題(theme),更準(zhǔn)確的說(shuō)是讓<application>標(biāo)簽的android:theme屬性設(shè)置成上面的主題.
<application android:theme="@style/AppTheme">
如果你完成了上面的步驟音婶,一定一定要記得完成接下來(lái)的步驟!@晨病衣式!
實(shí)現(xiàn)長(zhǎng)按退出
首先你要確保 DismissOverlayView
全屏且覆蓋在所有的view的上面。
下面是一個(gè)示范
<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è)置一些介紹文本,這些文本將會(huì)在用戶(hù)第一次使用你的app的時(shí)候自動(dòng)顯示(好贊)乃正。之后用 GestureDetector
來(lái)探測(cè)長(zhǎng)按事件:
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è)置手勢(shì)探測(cè)器(gesture detector)
mDetector = new GestureDetector(this, new SimpleOnGestureListener(){
public void onLongPress(MotionEvent ev) {
mDismissOverlay.show();
}
});
}
// 捕獲長(zhǎng)按事件
@Override
public boolean onTouchEvent(MotionEvent ev) {
return mDetector.onTouchEvent(ev) || super.onTouchEvent(ev);
}
}
當(dāng)系統(tǒng)發(fā)現(xiàn)一個(gè)長(zhǎng)按手勢(shì)時(shí)住册, <DismissOverlayView>
元素將會(huì)顯示一個(gè)Exit按鈕,用戶(hù)按一下之后你的activity就退出了