Android 2.3.7で動かすと落ちる。
SlidingPaneLayoutActivity.javaの FirstLayoutListenerクラスで removeOnGlobalLayoutListenerを呼び出しているけど、これって API Level16からだよね?
「if (Build.VERSION.SDK_INT >= Build.VERSION_CODES. JELLY_BEAN) {」でくくって「removeGlobalOnLayoutListener」と呼び分けることで動くようになった。
3489-0.javaprivate class FirstLayoutListener implements
ViewTreeObserver.OnGlobalLayoutListener {
@Override
public void onGlobalLayout() {
mActionBar.onFirstLayout();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
mSlidingLayout.getViewTreeObserver().removeOnGlobalLayoutListener(this);
} else {
mSlidingLayout.getViewTreeObserver().removeGlobalOnLayoutListener(this);
}
}
}
なるほど、こういう UIを簡単に作れる訳か。
Detailがメインなら Drawer layoutを、リストがメインなら Sliding pane layoutって感じで使い分けるのかしら?
今取り組んでいるアプリでは Drawer layoutのほうが合いそうなので、Sliding pane layoutは頭の隅に置いておこう。
Drawer layoutは割と日本語の情報があるのに Sliding pane layoutはほとんど無いのは何故だろう?確かに前者の方がつぶしがききそうではあるのだけど。
2013/07/08追記
Drawer layoutと Sliding pane layout両方を使ってみて、使い分けの指針がわかったかな?
Drawer layoutはあくまで Drawerなので、必要な時に引き出すだけの用途。
対して Sliding pane layoutは Summary-Detailパターンのように主従はあったとしても二つのレイアウトが必須で必要に応じて表示/非表示を切り替えるような用途に使うと。
ちなみに日本語の情報がないのは必要がないほどシンプルだからだと思う。
Sliding pane layout
Sliding pane layoutを使ってみた。