facebookでおなじみのスライドメニュー(ただし現在facebookはスライドメニューを廃止するかどうかのA/Bテスト中)をandroidで簡単に実装するためのライブラリー「SlidingMenu」があるのですが、これを導入してSimpleExampleを試す際の覚書。
SlidingMenu - GitHub
https://github.com/jfeinstein10/SlidingMenu
ライブラリの導入方法
下記の2つを参考に。下記2つはActionBarSerlockを例にしていますが、やり方は同じなので問題ありません。
むしろSlidingMenuはActionBarSherlockとも連携をとれる作りになっているので、合わせて導入するのもいいでしょう。
Android 2.xでAction Barが使えるActionBarSherlockの使い方
http://d.hatena.ne.jp/gabuchan/20120227/1330302592
Jarじゃないソースしか無い、Androidのライブラリーをプロジェクト内に組み込む
http://blog.excite.co.jp/spdev/18968801/
(覚書)ライブラリのフォルダ名を「(親のプロジェクト名)_(ライブラリ名)」にしておくと、プロジェクトエクスプローラで親とライブラリのプロジェクトが隣同士に並ぶので管理しやすい。
Simple Exampleの補足
public class SlidingExample extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setTitle(R.string.attach);
// set the content view
setContentView(R.layout.content);
// configure the SlidingMenu
SlidingMenu menu = new SlidingMenu(this);
menu.setMode(SlidingMenu.LEFT);
menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
menu.setShadowWidthRes(R.dimen.shadow_width);
menu.setShadowDrawable(R.drawable.shadow);
menu.setBehindOffsetRes(R.dimen.slidingmenu_offset);
menu.setFadeDegree(0.35f);
menu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);
menu.setMenu(R.layout.menu);
}
}
当然、作成したActivityにonCreateの中身を入れるとエラーになる部分がいくつかあります。とりあえず動作だけ見たいのであれば、サンプルソースに入っている値をそのまま入れてしまいましょう。
menu.setShadowWidthRes(R.dimen.shadow_width);
スライドメニューと親のActivityの境目につける陰の幅。15dp。
menu.setShadowDrawable(R.drawable.shadow);
スライドメニューと親元のActivityの境目につける陰の画像。サンプルソースでは、xmlで作成しています。
https://github.com/jfeinstein10/SlidingMenu/blob/master/example/res/drawable/shadow.xml
menu.setBehindOffsetRes(R.dimen.slidingmenu_offset);
スライドメニューを出した時に、親のActivityの端をどれだけ表示するか。60dp。
menu.setMenu(R.layout.menu);
スライドメニューのレイアウトファイル。お好きな様に。サンプルソースでは、fragmentにしているので、同様にfragmentで作成する場合は、親のActivityは当然FragmentActivityにする必要がある。
ちなみにFragment関連は全てsupport-v4にしても動作します。
その他のスライドメニューの使い方は、プロジェクト内のExampleコードを参考にしましょう。Playストアに上がっているデモアプリで動作の確認もできます。
https://play.google.com/store/apps/details?id=com.slidingmenu.example