所以我想要以打開它的方式爲我的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