因此,我使用此方法为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()
时,它会保持动画效果。有什么问题吗?
答案 0 :(得分:2)
问题是调用clearAnimation()
会结束当前动画……这会触发您的onAnimationEnd()
方法,从而开始新的动画。
我将创建一个布尔标志来跟踪动画是否应循环播放,并在您要取消动画时将其关闭。
private boolean shouldRepeatAnimations = true;
@Override
public void onAnimationEnd(Animation animation) {
if (shouldRepeatAnimations) {
view.startAnimation(animationIn);
}
}
shouldRepeatAnimations = false;
view.clearAnimation();