使用TranslateAnimation后无法使用按钮?

时间:2011-12-02 11:32:52

标签: android translate-animation

我一直在研究以下代码

    Animation animation1= new TranslateAnimation(0,0,0,-250);
    animation1.setDuration(1000);
  animation1.setFillAfter(true);
     rom.startAnimation(animation1);

翻译工作正常,但在翻译后我无法使用clicklistener。 是否可以使用它。 请有人帮帮我?

1 个答案:

答案 0 :(得分:0)

在运行之前,您可以在动画本身上调用setFillAfter(true)。 这将在动画完成后将新坐标应用于视图。

anim.setFillAfter(true);
viewToAnimate.startAnimation(anim);

如果这不起作用,您可以在动画完成时尝试在视图上设置边距。创建一个AnimationListener并为Animation设置它。然后使用onComplete方法中的边距更改视图位置。

final View viewToAnimate = ...;
final int finalX = ...;
final int finalY = ...;

anim.setAnimationListener(new AnimationListener()
            {

            public void onAnimationStart(Animation animation)
            { 
            }

            public void onAnimationRepeat(Animation animation)
            {
            }

            public void onAnimationEnd(Animation animation)
            {
                FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(getLayoutParams());
                lp.setMargins(finalX, finalY, 0, 0);
                viewToAnimate.setLayoutParams(lp);
                viewToAnimate.requestLayout();
            }
        });
viewToAnimate.startAnimation(anim);

上面的代码假设你的视图包含在FrameLayout中(因此是FrameLayout.LayoutParams代码)

您可以尝试的另一件事是在动画完成后使用新坐标再次布局视图。

viewToAnimate.layout(finalX, finalY, finalX + viewWidth, finalY + viewHeight);
viewToAnimate.requestLayout();

尝试使用这三种方法中的每一种,看看哪种方法适合您。 希望setFillAfter(true)方法能够工作,因为它是最简单的。

编辑:哎呀 - 我没注意到你已经调用了setFillAfter。看起来不行,所以尝试其他两种方法之一