Main LayoutをDrawerと一緒に動かす Android
公式では推奨されていませんが、私的にこういう挙動が好きという方は是非参考にして実装してみてください。
アクティビティ
JAVA
mDrawerToggle = new ActionBarDrawerToggle(this, drawer, R.string.app_name, R.string.app_name) { @Override public void onDrawerSlide(View drawerView, float slideOffset) { super.onDrawerSlide(drawerView, slideOffset); mainView.setTranslationX(slideOffset * drawerView.getWidth()); } }; mDrawer.setDrawerListener(mDrawerToggle);
Kotlin
val drawerToggle = object : ActionBarDrawerToggle(this, drawer, R.string.app_name, R.string.app_name) { override public fun onDrawerSlide(drawerView: View, slideOffset: Float) { super.onDrawerSlide(drawerView, slideOffset) mainContainer.setTranslationX(slideOffset * drawerView.getWidth()); bar!!.setTranslationX(slideOffset * drawerView.getWidth()); } } drawer.setDrawerListener(drawerToggle)
ポイントはこの部分です。
@Override public void onDrawerSlide(View drawerView, float slideOffset) { super.onDrawerSlide(drawerView, slideOffset); mainView.setTranslationX(slideOffset * drawerView.getWidth()); }
onDrawerSlideの第二引数slideOffset
には、ドロワーが動いた距離の比率が0~1の範囲で格納されているので、それをもとにMain Layoutを同期的に動かせば完成です。