这很棘手。
我认为这类似于在新的谷歌地图应用程序中对抽屉手柄所做的事情。不要相信我的话,不确定。:)
我已经编写了保持在Activity
内容视图边缘的切换。当DrawerLayout
拖动 时,我将 x 轴上的视图平移了最小子项(即DrawerLayout
内容视图)减去阴影(如果有)的数量。由于阴影投射+内容视图DrawerLayout
给出了整个抽屉的完整测量宽度。
我迅速将滑动的偏移量和最小的孩子相乘并找到 x 平移。
[编辑:为了便于阅读,代码已被删除,并已移至下面提供的链接]
在您的活动中:
mDrawerToggle = new DrawerLayoutEdgeToggle(
this,
mDrawerLayout,
R.drawable.ic_launcher,
R.drawable.ic_launcher,
Gravity.LEFT,
true) {
@Override
public void onDrawerClosed(View view) {
super.onDrawerClosed(view); //must call super
}
@Override
public void onDrawerOpened(View view) {
super.onDrawerOpened(view); //must call super
}
@Override
public void onDrawerSlide(View view, float slideOffset) {
super.onDrawerSlide(view, slideOffset); //must call super
}
};
mDrawerLayout.setDrawerListener(mDrawerToggle);
创造力提升:
您可以添加更多装饰物,例如与 ActionBar 的距离,您可以将其设置为手柄的边距。
您也可以通过在 Y 轴上平移沿左/右上下移动手柄来模拟“单拉链效果”。:)
编辑:它可以在我的GitHub 上找到
编辑2:对于那些无法在开头出现句柄的人,只需使用mDrawerToggle.setVerticalPostionOffset(0)