- Android入門基礎:從這裡開始
- Android分享操作
- Android多媒體
- Android圖像與動畫
- Android網絡連接與雲服務
- Android聯繫人與位置信息
- Android可穿戴應用
- Android TV應用
- Android企業級應用
- Android交互設計
- Android界面設計
- Android用戶輸入
- Android後臺任務
- Android性能優化
- Android安全與隱私
- Android測試程序
退出全屏的Activity
編寫: roya 原文:https://developer.android.com/training/wearables/ui/exit.html
默認情況下,用戶通過從左到右滑動退出Android Wear activities。如果應用含有水平滾動的內容,用戶首先滑動到內容邊緣,然後再次從左到右滑動即退出app。
對於更加沉浸式的體驗,比如在應用中可以任意方向地滾動地圖,這時我們可以在應用中禁用滑動退出手勢。然而,如果我們禁用了這個功能,那麼我們必須使用Wearable UI庫中的DismissOverlayView
類實現長按退出UI模式讓用戶退出應用。當然,我們需要在用戶第一次運行我們應用的時候提醒用戶可以通過長按退出應用。
更多關於退出Android Wear activities的設計指南,請查看Breaking out of the card。
禁用滑動退出手勢
如果我們應用的用戶交互模型與滑動退出手勢相沖突,那麼我們可以在應用中禁用它。為了禁用滑動退出手勢,需要繼承默認的theme,然後設置android:windowSwipeToDismiss
屬性為false
:
<style name="AppTheme" parent="Theme.DeviceDefault">
<item name="android:windowSwipeToDismiss">false</item>
</style>
如果我們禁用了這個手勢,那麼我們需要實現長按退出UI模型來讓用戶退出我們的應用,下面的章節會介紹相關內容。
實現長按退出模式
要在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
元素並設置一些提示文字。這些文字會在用戶第一次運行我們的應用時提醒用戶可以使用長按手勢退出應用。接著用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會被終止。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
![扫码二维码加入Web技术交流群](/public/img/jiaqun_03.jpg)
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论