我的活动中有一个 LinearLayout 视图。
当我按下后退按钮时,我希望 LinearLayout 的孩子滑出。
我有以下不做任何事情的代码:
private void SlideOut()
{
LayoutAnimationController controller =
AnimationUtils.loadLayoutAnimation(this, R.anim.layout_pop_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();
}
layout_pop_out 是:
<?xml version="1.0" encoding="utf-8"?>
<layoutAnimation xmlns:android="http://schemas.android.com/apk/res/android"
android:animationOrder="reverse"
android:animation="@anim/pop_out"
android:delay="10%" />
我已经注释掉了 super.OnBackPressed() 以查看动画是否开始,并且它没有开始。
有类似问题的人吗?
如果在按钮中设置onclick监听器,SlideOut方法可以工作,动画播放。 我认为问题出在“startLayoutAnimation”上,如果调用 onBackPressed 或 OnKeyListener(keyCode == KeyEvent.KEYCODE_BACK && action == KeyEvent.ACTION_UP) 布局动画不播放,但我单击动画按钮。
/**
* Runs the layout animation. Calling this method triggers a relayout of
* this view group.
*/
public void startLayoutAnimation() {
if (mLayoutAnimationController != null) {
mGroupFlags |= FLAG_RUN_ANIMATION;
requestLayout();
}
}