1

我想用下面的代码在我的 Android 应用中制作一个 translateAnimation :

        TranslateAnimation anim = new TranslateAnimation(0,0,-400,0);
        anim.setDuration(400);
        anim.setAnimationListener(new AnimationListener() {

            @Override
            public void onAnimationStart(Animation animation) {                     
            }

            @Override
            public void onAnimationRepeat(Animation animation) {
                // TODO Auto-generated method stub

            }

            @Override
            public void onAnimationEnd(Animation animation) {

                mlLinearLayout.clearAnimation();
                mlLinearLayout.requestLayout();
                mlLinearLayout.layout(mlLinearLayout.getLeft(), mlLinearLayout.getTop()+400, mlLinearLayout.getRight(), mlLinearLayout.getBottom());
            }
        });
        anim.setInterpolator(new AccelerateInterpolator());
        anim.setFillEnabled(true);
        anim.setFillAfter(true);
        anim.setFillBefore(false);
        mlLinearLayout.startAnimation(anim);
        active=false;

但是当这个动画完成时,即使我用新位置重建我的视图,LinearLayout 也会回到他的起始位置。请问我该如何更改?

4

1 回答 1

3

我终于找到了解决方案:

            TranslateAnimation anim = new TranslateAnimation(0,0,0,400);
            anim.setDuration(400);
            anim.setAnimationListener(new AnimationListener() {

                @Override
                public void onAnimationStart(Animation animation) {                     
                }

                @Override
                public void onAnimationRepeat(Animation animation) {
                    // TODO Auto-generated method stub

                }

                @Override
                public void onAnimationEnd(Animation animation) {
                    mlLinearLayout.layout(mlLinearLayout.getLeft(), mlLinearLayout.getTop()+400, mlLinearLayout.getRight(), mlLinearLayout.getBottom());
                }
            });
            anim.setFillEnabled(true);
            anim.setFillAfter(false);
            anim.setFillBefore(false);
            mlLinearLayout.startAnimation(anim);
            active=false;

当我在翻译后重建我的视图时,fillafter 没有用,现在它工作完美,没有滞后和跳跃!

于 2013-03-26T09:40:39.917 回答