Я пытаюсь закрыть свой навигационный ящик после того, как сразу закончу некоторые действия, без скользящей анимации. Я не закрываю его при запуске активности, потому что я бы хотел, чтобы он оставался открытым, если пользователь отказывается от активности. Тем не менее, я не могу заставить его закрыться без короткой мигающей анимации, поскольку она закрывается. Я пробовал варианты следующего кода:
protected void closeDrawerImmediate() { mDrawerLayout.setVisibility(View.GONE); mDrawerLayout.closeDrawers(); mDrawerLayout.setX(0); mDrawerLayout.setVisibility(View.VISIBLE); }
Вы можете использовать новые DrawerLayout.closeDrawer(int/View, bool)
в v24 библиотеки поддержки, чтобы мгновенно закрыть ящик:
drawerLayout.closeDrawer(Gravity.LEFT, false);
Если вы просто хотите сразу закрыть ящик, например, когда вы запускаете операцию, постукивая по элементу ящика, этого, вероятно, достаточно.
Если вы хотите закрыть ящик при возврате к активности, я бы установил состояние boolean как closeDrawerOnResume = true
где это уместно (например, начало нового действия), а затем в onResume
проверьте это логическое значение и закройте ящик без анимации если это правда.
Вы можете рассмотреть возможность установки времени анимации на 0. Но, похоже, это не так просто, как установить одно свойство. Вот учебник и код, но он требует импорта источников для DrawerLayout
и ViewDragHelper
в проект и небольшие изменения там.