如何通过边缘滑动(而不是主页图标)检测导航抽屉是否已打开?

时间:2013-06-18 20:08:33

标签: android swipe navigation-drawer

我在Android应用中使用了Navigation Drawer

由于这是一个我觉得很难发现的模式,我的计划是在屏幕底部添加一条消息,直到用户最终发现它并通过滑动成功打开它。

我知道我可以使用:

public void onDrawerOpened(View drawerView) {
    // Stop telling the user, he know how it works
}

但是当使用ActionBar中的左上角按钮打开它时也会触发此动作。

任何有关检测成功滑动的建议都会受到热烈欢迎。

2 个答案:

答案 0 :(得分:6)

您需要收听状态更改回调:

        @Override
        public void onDrawerStateChanged(int newState) {                
            if (newState == DrawerLayout.STATE_DRAGGING) {
                Log.v(TAG, "Drawer opened by dragging");
            }
        }

仅当用户将抽屉拖入视图时才会出现此状态。点击主页图标不会导致这种情况 - 这正是您想要的。

答案 1 :(得分:2)

如果不扩展DrawerLayout,您可以使用DrawerListener和Home按钮按下的布尔标志的组合。

使用onDrawerSlide方法实现DrawerListener。在此方法中,您可以检查主页按钮标志,如果这是假的并且抽屉滑动打开,那么您知道这是通过幻灯片的操作。

有点凌乱。

除了覆盖DrawerLayout并覆盖onTouchEvent并捕获移动事件。