2013年7月9日火曜日

Navigation DrawerをActionBarSherlockで使ってみたい(デザインガイド非準拠)・・・コンテンツ操作用を作成

前々回記事(リンク)前回記事(リンク)の続きです。

 

前回までのあらすじ

前回のラブライブ!
ついにスクールアイドルとしてはじめてのライブに挑むことになったニクニクと(ry

以下本編

何回かに分けてNavigationDrawerを触ってきましたが、本来の目的は
  「NavigationDrawerを右だししてコンテンツ操作用にカスタマイズしたDrawerが欲しい」
でした。
今回は、そのドロワー作成をしましたという記事。

その前にナビゲーションドロワーとは?

NavigationDrawerのガイド(リンク)を見たところ、その特徴としては

  • ドロワーを出せるときはアップナビゲーションアイコンをドロワー有り表示とする
  • 画面外からの操作(左からエッジスワイプ)で表示できること
  • アップナビゲーションアイコンからドロワーを呼び出せること
  • ドロワー表示中はアイコン、アクセシビリティの表示を変更すること

などがあります。

→このあたりはテクブさんの記事(リンク)がとても参考になります!

コンテンツ操作用のドロワーとしてはどうするか?

ActionBarDrawerToggle.javaやDrawerLayout.javaを見ればわかりますが、安易に右だしするのはやめて!という意図が伝わってきます。
ユーザーを混乱させるなということですよね。
じゃぁどうするかですが、上記のNavigationDrawerの特徴をはずしていけばいいのかなということで以下の対処をしてみます。

  • アップナビゲーションアイコンの表示を変更しない
  • 画面外からの操作(エッジスワイプ)で表示させない
  • アップナビゲーションアイコンから呼び出させない
  • ドロワー表示中はアイコン表示を変更しない(アクセシビリティの表示はお好みで

 

実行時画面

ContentDrawer選択して、ボタン選択で、右だしドロワー表示まで。

image image image

 

実装サンプル

上記対応を行ったサンプルをGitHubにあっぷしておきました。
参考にどうぞ。

https://github.com/miquniqu/AbsNavigationDrawerSample

前回からの変更箇所はこちら

https://github.com/miquniqu/AbsNavigationDrawerSample/commit/94b4ebdcf929c7fd3b9c9fc21deca2f5b5cb8681

 

修正したソースの概要

ActionBarContentDrawerToggle.java
→ActionBarDrawerToggle.javaをベースにコンテンツ用にアイコン操作を削除、ドロワー呼び出しとしてpublic void toggleDrawer()追加

ContentDrawerLayout.java
→DrawerLayout.javaをベースにエッジスワイプ操作を削除(setEdgeTrackingEnabledをコメント化しただけ

ContentDrawerActivity.java
→サンプルアプリから、ドロワー呼び出し方法としてボタン追加
※FragmentからActivityのドロワー呼び出しするにはyanzmさんの記事(リンク)が参考になります。

 

NavigationDrawerがらみはこれでおわり!

0 件のコメント:

コメントを投稿