无法清除视图上的动画,Android?

时间:2018-11-16 15:49:35

标签: android animation

因此,我使用此方法为view设置了无限的时间:

    private void animateView (final View view) {
        final Animation animationIn = AnimationUtils.loadAnimation(this,R.anim.fade_in);
        final Animation animationOut = AnimationUtils.loadAnimation(this, R.anim.fade_out);

        animationIn.setAnimationListener(new Animation.AnimationListener() {
            @Override
            public void onAnimationStart(Animation animation) {

            }

            @Override
            public void onAnimationEnd(Animation animation) {
                view.startAnimation(animationOut);
            }

            @Override
            public void onAnimationRepeat(Animation animation) {

            }
        });
        animationOut.setAnimationListener(new Animation.AnimationListener() {
            @Override
            public void onAnimationStart(Animation animation) {

            }

            @Override
            public void onAnimationEnd(Animation animation) {
                view.startAnimation(animationIn);
            }

            @Override
            public void onAnimationRepeat(Animation animation) {

            }
        });
        view.startAnimation(animationIn);
    }

我之所以使用这种方法,是因为animation.setRepeatMode()animation.setRepeatCount()似乎不起作用,经过一番搜索,我发现它们基本上是越野车。

但是当我打电话给myView.clearAnimation()时,它会保持动画效果。有什么问题吗?

1 个答案:

答案 0 :(得分:2)

问题是调用clearAnimation() 会结束当前动画……这会触发您的onAnimationEnd()方法,从而开始新的动画。

我将创建一个布尔标志来跟踪动画是否应循环播放,并在您要取消动画时将其关闭。

  • 创建标志(默认为true)
private boolean shouldRepeatAnimations = true;
  • 读取该标志以确定您的动画是否应该循环播放:
@Override
public void onAnimationEnd(Animation animation) {
    if (shouldRepeatAnimations) {
        view.startAnimation(animationIn);
    }
}
  • 要取消动画时,也请关闭该标志:
shouldRepeatAnimations = false;
view.clearAnimation();