所以我想为我的 DrawerLayout 设置动画,使其打开,将一个项目添加到其中的菜单中,然后关闭它。
我尝试了很多东西,但问题是“打开”和“关闭”命令之间没有延迟(或者至少不是一个明显的延迟),因此动画永远不会触发。
我真的不想使用任意长度的“延迟发布”,因为这看起来很脏。我已经尝试在侦听器中手动覆盖“onDrawerOpened()” - 这可以工作,但是在执行操作后我无法关闭它,因为您无法从自身内部关闭它(意思是,如果'closeDrawer(布局)' 方法从侦听器本身的任何子线程调用,它会得到一个运行时错误)。
所以我所拥有的是:
_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
我什至在 DrawerLayout 上尝试了“getAnimation()”,但它返回 null,所以我不能用它来发布延迟的动作。
任何人都知道如何解决这个问题?我是否应该使用任意延迟并希望它在所有设备上看起来都一样?有没有办法从听者内部关闭抽屉?提前致谢!