close Navigation Drawer with no animation

2019-06-21 06:10发布

I am trying to close my navigation drawer after I finish certain activities immediately, without the sliding animation. I don't close it on activity start because I would like it to stay open if the user backs out of the activity. However, I cannot get it to close without a brief flickering animation as it closes itself. I have tried variations of the following code:

protected void closeDrawerImmediate() {
    mDrawerLayout.setVisibility(View.GONE);
    mDrawerLayout.closeDrawers();
    mDrawerLayout.setX(0);
    mDrawerLayout.setVisibility(View.VISIBLE);
}

2条回答
我欲成王,谁敢阻挡
2楼-- · 2019-06-21 06:40

You can use the new DrawerLayout.closeDrawer(int/View, bool) methods in v24 of the support library to instantly close a drawer:

drawerLayout.closeDrawer(Gravity.LEFT, false);

If you just want to close a drawer immediately, such as when you're launching an activity from tapping on a drawer item, that is probably enough.

If you want to close the drawer on coming back to the activity, I'd set a stateful boolean like closeDrawerOnResume = true wherever is appropriate (eg. starting a new activity), and then in onResume check this boolean and close the drawer without animating if it is true.

查看更多
Anthone
3楼-- · 2019-06-21 06:51

You can consider setting animation time to 0. But it seems it's not as easy as setting one property. Here is tutorial and the code but it requires importing sources for DrawerLayout and ViewDragHelper into project and small modifications there.

查看更多
登录 后发表回答