2013-06-18 11 views
6

Używam Navigation Drawer w mojej aplikacji na Androida.Jak wykryć, że szuflada nawigacji została otwarta za pomocą przesunięcia krawędzi (a nie ikony domowej)?

Ponieważ jest to wzór, który bardzo trudno odkryć, moim zamiarem było dodanie małej wiadomości u dołu ekranu, dopóki użytkownik w końcu go nie odkryje i pomyślnie otworzył ją przesuwaniem palca.

wiem, że mogę używać:

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

Ale ta akcja jest również wyzwalane podczas otwierania go z lewego górnego przycisku w ActionBar.

Każda sugestia, aby wykryć udany ruch, byłaby mile widziana.

+2

Dlaczego ma znaczenie, czy użytkownik otwiera go za pomocą przesunięcia palcem lub za pomocą paska akcji? Tak długo, jak mogą się do tego dostać, wiedzą, jak się do tego dostać. – CommonsWare

+2

Ponieważ zostałem poproszony o zrobienie tego i otrzymam zapłatę w ten sposób. Wydaje się legit. –

+1

Myślę, że sprawienie, że użytkownik odkryje funkcję, której nie zna w nieinwazyjny i nie powtarzający się sposób, brzmi jak coś docenionego w aplikacji. przesunięcie krawędzi to jedyna nieintuicyjna funkcja mojej aplikacji, więc brzmi to przyjemnie, aby ją dosypać. –

Odpowiedz

6

Trzeba słuchać zmiany zwrotnego państwowej:

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

Stan ten występuje tylko wtedy, gdy użytkownik przeciągnie szufladę do widzenia. Stukanie w ikonę domu nie powoduje tego - co jest dokładnie tym, czego potrzebujesz.

2

Bez rozszerzania DrawerLayout można użyć kombinacji DrawerListener i flagi boolowskiej dla naciśnięcia przycisku Home.

Zaimplementuj szufladęListener z metodą onDrawerSlide. Wewnątrz tej metody można sprawdzić flagę przycisku strony głównej, a jeśli jest to fałsz, a szuflada jest wysunięta, wiadomo, że była to czynność za pośrednictwem slajdu.

Nieco bałagan.

Oprócz tego zastępuje DrawerLayout i zastępuje zdarzenia onTouchEvent i catch move.

Powiązane problemy