2013-06-18 6 views
6

Ich verwende eine Navigation Drawer in meiner Android App.Wie erkennt man, dass der Navigationsschubladen mit einem Kantenwischer geöffnet wurde (und nicht mit dem Home-Icon)?

Da dies ein Muster ist, das ich sehr schwer zu entdecken finde, war mein Plan, eine kleine Nachricht am unteren Bildschirmrand hinzuzufügen, bis der Benutzer es schließlich entdeckt und erfolgreich mit einem Swipe geöffnet hat.

Ich weiß, dass ich verwenden könnte:

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

Aber diese Aktion wird auch ausgelöst, wenn es mit der oberen linken Taste in der ActionBar öffnen.

Jeder Vorschlag, einen erfolgreichen Swipe zu erkennen, wäre herzlich willkommen.

+2

Warum spielt es eine Rolle, ob der Benutzer sie per Wisch oder über die Aktionsleiste öffnet? Solange sie es schaffen, wissen sie, wie sie es erreichen können. – CommonsWare

+2

Weil ich dazu aufgefordert wurde und dafür bezahlt werde. Klingt plausibel. –

+1

Ich denke, dass es etwas Angenehmes innerhalb einer Anwendung macht, wenn man einen Benutzer dazu bringt, ein Feature zu entdecken, das er nicht auf eindringliche und nicht repetitive Weise kennt. Rand Swipe ist die einzige nicht intuitive Funktion meiner App, so dass es klingt schön, es zu tun. –

Antwort

6

Sie müssen die Zustandsänderung Rückruf hören:

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

Dieser Zustand tritt nur, wenn der Benutzer die Schublade in den Blick zieht. Wenn Sie auf das Home-Symbol tippen, wird dies nicht ausgelöst - genau das, was Sie möchten.

2

Ohne DrawerLayout können Sie eine Kombination aus dem DrawerListener und einem booleschen Flag für die Home-Taste drücken.

Implementieren Sie den DrawerListener mit der onDrawerSlide-Methode. Bei dieser Methode können Sie das Häkchen bei der Home-Schaltfläche aktivieren. Wenn dies falsch ist und die Schublade geöffnet wird, wissen Sie, dass dies eine Aktion durch die Folie war.

Bit unordentlich.

Darüber hinaus überschreiben Sie DrawerLayout und überschreiben das onTouchEvent und fangen Bewegungsereignisse.