Итак, я хочу анимировать мой DrawerLayout таким образом, чтобы он был открыт, элемент добавлен в меню, а затем он закрыт.Открыть DrawerLayout, выполнить действие, затем закрыть его
Я пробовал много вещей, но проблема в том, что между командами «Открыть» и «Закрыть» нет (или, по крайней мере, не заметной) задержки, и поэтому анимация никогда не запускается.
Я действительно не хочу использовать «post delayed» с произвольной длиной, потому что это кажется грязным. Я попытался вручную переопределить «onDrawerOpened()» в слушателе, который РАБОТАЕТ, но затем я не могу ЗАКРЫТЬ его ПОСЛЕ того, как действие выполняется, потому что вы не можете закрыть его изнутри (что означает, если «closeDrawer» (layout) 'метод вызывается из любого подпотока самого слушателя, он получит ошибку времени выполнения).
Так что у меня есть:
_drawerToggle = new ActionBarDrawerToggle(MainActivity.this, _drawerLayout, R.drawable.ic_drawer, R.string.drawerOpen, R.string.drawerClose)
{
/** Called when a drawer has settled in a completely closed state. */
public void onDrawerClosed(View view) {
getActionBar().setTitle(_title);
}
/** Called when a drawer has settled in a completely open state. */
public void onDrawerOpened(View drawerView) {
myAction(); //My action
//If I try to invoke 'drawerClose()' here or in my action, a runtime error occurs
}
};
_drawerLayout.setDrawerListener(_drawerToggle);
_drawerLayout.openDrawer(_mainFrame);
//If I invoke 'drawerClose()' the entire thing is just too fast and the animations don't trigger
Я даже пытался «getAnimation()» на DrawerLayout, но она возвращает нуль, так что я не могу использовать его, чтобы опубликовать замедленное действие.
У кого-нибудь есть идея, как подойти к этому? Должен ли я использовать произвольную задержку и надеюсь, что она будет выглядеть одинаково на всех устройствах? Есть ли способ закрыть ящик изнутри слушателя? Спасибо заранее!
Я решил выбрать аналогичное решение. Я не могу поверить, что нет более элегантного способа добиться этого, но, черт возьми, что работает, работает. Благодаря! –
@ EladAvron намного шире, например, используя build в getContentView(). PostDelayed (Runnable, int), если вы работаете в Activity? (Вы можете использовать postDelayed для любого представления на самом деле) – Redwarp