2013-06-18 53 views
6

我在我的Android應用程序中使用了Navigation Drawer如何通過邊緣滑動(而不是主圖標)檢測到導航抽屜已打開?

由於這是一種我覺得很難發現的模式,我的計劃是在屏幕底部添加一條消息,直到用戶最終發現並通過滑動成功打開它。

我知道,我可以使用:

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

但隨着動作條的左上方按鈕打開時,它也觸發這個動作。

任何建議檢測一個成功的刷卡將受到熱烈歡迎。

+2

爲什麼用戶是通過滑動還是通過操作欄打開它?只要他們能夠做到,他們就知道如何去做到。 – CommonsWare

+2

因爲我被要求這麼做,並且會這樣做。似乎是合法的。 –

+1

我認爲,讓用戶在非侵入性和非重複性方式中發現他不知道的功能聽起來像是在應用程序中感受到的東西。邊緣滑動是我的應用程序唯一非直觀的功能,所以它使dos doscover聽起來不錯。 –

回答

6

你要聽狀態更改回調:只有當用戶拖動抽屜眼簾發生

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

這種狀態。點擊主頁圖標並不會導致這種情況 - 這正是您想要的。

2

如果不擴展DrawerLayout,您可以將DrawerListener和布爾型標誌組合起來用於主頁按鈕按下。

使用onDrawerSlide方法實現DrawerListener。在這個方法裏面,你可以檢查Home按鈕標誌,如果這是錯誤的,並且抽屜滑動打開,那麼你知道這是通過幻燈片進行的操作。

有點混亂。

除此之外,覆蓋DrawerLayout並重寫onTouchEvent和catch移動事件。