所以我使用这个方法来view无限时间地设置 a 的动画:
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);
}
Run Code Online (Sandbox Code Playgroud)
我使用这种方法是因为它似乎animation.setRepeatMode()不起作用animation.setRepeatCount(),经过一番搜索后我发现它们基本上都是错误的。
但当我打电话时myView.clearAnimation(),它一直在动画。问题是什么?
问题是调用clearAnimation() 结束当前动画...这会触发您的onAnimationEnd()方法,开始一个新的动画。
我将创建一个布尔标志来跟踪动画是否应该循环,并在您想要取消动画时将其关闭。
private boolean shouldRepeatAnimations = true;
Run Code Online (Sandbox Code Playgroud)
@Override
public void onAnimationEnd(Animation animation) {
if (shouldRepeatAnimations) {
view.startAnimation(animationIn);
}
}
Run Code Online (Sandbox Code Playgroud)
shouldRepeatAnimations = false;
view.clearAnimation();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1502 次 |
| 最近记录: |