2011-11-06 27 views
1

我的活動中有一個LinearLayout視圖。如何在離開活動時(之前)啓動layoutAnimation

當我按下後退按鈕時,我希望LinearLayout的孩子滑出。

我有下面的代碼沒有做任何事情:

private void SlideOut() 
{ 
    LayoutAnimationController controller = AnimationUtils.loadLayoutAnimation(this, R.anim.layout_animation_row_slide_out); 
    Animation animation=controller.getAnimation(); 
    animation.setFillAfter(true); 
    LinearLayout menuLayout =((LinearLayout)findViewById(R.id.menuLayout)); 
    menuLayout.setLayoutAnimation(controller); 
    menuLayout.startLayoutAnimation(); 
} 

@Override 
public void onBackPressed(){ 
    //super.onBackPressed(); 
    SlideOut();  
} 

我註釋掉super.OnBackPressed(),看是否動畫開始時,它不會啓動。

有類似問題的人?

+0

SlideOut方法正在工作,當我從按鈕onClick調用它時... – Ionica

回答

0

檢查滑出式()被調用onBackPressed - 我猜你的背部按被其他地方處理 - 可能通過虛擬鍵盤

+0

我檢查了它與斷點,它運行SlideOut()方法,但沒有發生。 – Ionica

0

嘗試this.it可以幫助你:

public boolean onKeyDown(int keyCode, KeyEvent event) { 
    // TODO Auto-generated method stub 

    if(keyCode==KeyEvent.KEYCODE_BACK){ 
    SlideOut(); 
    return true; 
    }else{ 
     return false; 
    } 

    //return super.onKeyDown(keyCode, event); 

} 

你可以在這裏更改代碼:

private void SlideOut() 
{ 
    Animation controller = AnimationUtils.loadLayoutAnimation(this, R.anim.layout_animation_row_slide_out); 
    // Animation animation=controller.getAnimation(); 
    animation.setFillAfter(true); 
    LinearLayout menuLayout =((LinearLayout)findViewById(R.id.menuLayout)); 
    menuLayout.startAnimation(controller); 

} 
+0

謝謝,仍然不工作,再次,方法被稱爲(用斷點測試) – Ionica

+0

如果方法被調用,那麼動畫有問題。 –

+0

在按鈕onClick事件上調用SlideOut()方法並且它正在工作 – Ionica

0

我想你可能會在動畫結束之前退出活動。嘗試實現動畫監聽器

相關問題