W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
編寫: roya 原文:https://developer.android.com/training/wearables/ui/exit.html
默認(rèn)情況下,用戶通過(guò)從左到右滑動(dòng)退出Android Wear activities。如果應(yīng)用含有水平滾動(dòng)的內(nèi)容,用戶首先滑動(dòng)到內(nèi)容邊緣,然后再次從左到右滑動(dòng)即退出app。
對(duì)于更加沉浸式的體驗(yàn),比如在應(yīng)用中可以任意方向地滾動(dòng)地圖,這時(shí)我們可以在應(yīng)用中禁用滑動(dòng)退出手勢(shì)。然而,如果我們禁用了這個(gè)功能,那么我們必須使用Wearable UI庫(kù)中的DismissOverlayView
類實(shí)現(xiàn)長(zhǎng)按退出UI模式讓用戶退出應(yīng)用。當(dāng)然,我們需要在用戶第一次運(yùn)行我們應(yīng)用的時(shí)候提醒用戶可以通過(guò)長(zhǎng)按退出應(yīng)用。
更多關(guān)于退出Android Wear activities的設(shè)計(jì)指南,請(qǐng)查看Breaking out of the card。
如果我們應(yīng)用的用戶交互模型與滑動(dòng)退出手勢(shì)相沖突,那么我們可以在應(yīng)用中禁用它。為了禁用滑動(dòng)退出手勢(shì),需要繼承默認(rèn)的theme,然后設(shè)置android:windowSwipeToDismiss
屬性為false
:
<style name="AppTheme" parent="Theme.DeviceDefault">
<item name="android:windowSwipeToDismiss">false</item>
</style>
如果我們禁用了這個(gè)手勢(shì),那么我們需要實(shí)現(xiàn)長(zhǎng)按退出UI模型來(lái)讓用戶退出我們的應(yīng)用,下面的章節(jié)會(huì)介紹相關(guān)內(nèi)容。
要在activity中使用DissmissOverlayView
類,添加下面這個(gè)節(jié)點(diǎn)到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
元素并設(shè)置一些提示文字。這些文字會(huì)在用戶第一次運(yùn)行我們的應(yīng)用時(shí)提醒用戶可以使用長(zhǎng)按手勢(shì)退出應(yīng)用。接著用GestureDetector
檢測(cè)長(zhǎng)按動(dò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);
// 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);
}
}
當(dāng)系統(tǒng)檢測(cè)到一個(gè)長(zhǎng)按動(dòng)作,DismissOverlayView
會(huì)顯示一個(gè)退出按鈕。如果用戶點(diǎn)擊它,那么我們的activity會(huì)被終止。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: