2

我的活动中有一个 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();
        }
    }

离开活动时(之前)如何启动 layoutAnimation

4

0 回答 0