2013-06-18 5 views
6

私はAndroidアプリでNavigation Drawerを使用しています。ナビゲーションスクロールがエッジスワイプで開かれたことを検出する方法(ホームアイコンではない)

これは見つけにくいパターンなので、ユーザーが最後に見つけてスワイプで開くまで、画面の下部に小さなメッセージを追加するという計画でした。

私は、私が使用できることを知っている:

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

しかし、アクションバーの左上のボタンでそれを開いたときに、このアクションもトリガされます。

成功したスワイプを検出するための提案は、大歓迎です。

+2

ユーザーがスワイプまたはアクションバーを使用して開くかどうかはどうしてですか?彼らがそれに到達できる限り、彼らはそれに到達する方法を知っています。 – CommonsWare

+2

私はそうするように頼まれており、そうすることによって賃金を得るでしょう。スジは通ってるようだ。 –

+1

私は、ユーザが非侵入的かつ非反復的な方法で知らない機能を発見すると、アプリケーション内で何かが賞賛されると思うと思います。エッジスワイプは私のアプリの唯一の非直感的な機能なので、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 Buttonフラグをチェックすることができます。これがfalseで、引き出しがスライドして開いている場合は、これがスライドを通して動作していたことがわかります。

ビットが乱雑です。

以外は、DrawerLayoutをオーバーライドし、onTouchEventイベントとキャッチムーブイベントをオーバーライドします。

関連する問題