所以我想要以打开它的方式为我的DrawerLayout设置动画,将一个项目添加到菜单中,然后关闭它。打开DrawerLayout,执行操作,然后关闭它
我尝试了很多东西,但问题是“打开”和“关闭”命令之间没有延迟(或者至少不是明显的),所以动画从不触发。
我真的不想用任意长度的'post delayed',因为这看起来很脏。 我已经尝试手动覆盖监听器中的“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
我甚至尝试“getAnimation()”在DrawerLayout但它返回空,所以我不能用它来发布行动迟缓。
任何人有一个想法如何处理这个?我是否应该使用任意延迟,并希望它在所有设备上看起来都一样?有没有办法从听众内部关闭抽屉? 在此先感谢!
我最终选择了类似的解决方案。我不敢相信没有更好的方法来完成这个任务,但是 - 呃 - 有效,有效。谢谢! –
@EladAvron有更多的优雅,就像在一个Activity中使用getContentView()。postDelayed(Runnable,int)中的构建一样? (你可以在任何视图上实际使用postDelayed) – Redwarp