按钮动画不会停止

时间:2014-01-07 11:43:17

标签: android

我将此动画应用于按钮(RelativeLayout),同时用户按住或移动(按下时)触摸:

ScaleAnimation start = new ScaleAnimation(1, 1.2f, 1, 1.2f, 0x1, 0.5f, 0x1, 0.5f);
final ScaleAnimation end = new ScaleAnimation(1.2f, 1, 1.2f, 1, 0x1, 0.5f, 0x1, 0.5f);

            end.setDuration(600); 
            start.setDuration(600);
            button.startAnimation(start);
            button.postDelayed(new Runnable() {

                @Override
                public void run() {
                    button.startAnimation(end);
                }

            }, 600);

当用户释放按钮时,必须调用另一个动画:

TranslateAnimation translateOut = new TranslateAnimation(0, -width, 1, 1);
            translateOut.setDuration(600);
            button.clearAnimation();
            button.startAnimation(translateOut);
            button.setVisibility(RelativeLayout.INVISIBLE);

它可以正常工作,但问题是按钮出现并在用户的最后触摸位置消失(闪烁)。

我已经尝试过这些代码来尝试修复它(并创建了一个标志来判断开始/结束动画是否正在运行),但它们都没有工作:

start.cancel();
end.cancel();
start/end.setFillAfter/Before(true);
button.clearAnimation();

任何解决方案?

1 个答案:

答案 0 :(得分:0)

在开始动画后,您正在设置按钮不可见,因此在动画运行时您的按钮是不可见的。尝试使用AnimationListener将可见性设置为在动画结束时不可见。

    start.setAnimationListener(new AnimationListener() {

        @Override
        public void onAnimationStart(Animation animation) {}

        @Override
        public void onAnimationRepeat(Animation animation) {}

        @Override
        public void onAnimationEnd(Animation animation) {
            button.setVisibility(View.INVISIBLE);
        }
    });