我在使用Android动画时出现了一些非常奇怪的行为,我想了解发生了什么。
我的ImageView
在xml中不可见,我没有设置alpha
。
ImageView
消失,但它没有任何动画效果,直接达到了最终效果:if (isFadeIn) {
myImage.animate().alpha(1.0f).setDuration(5000).withStartAction(() -> {
myImage.setVisibility(View.VISIBLE);
myImage.setAlpha(0.0f);
});
} else {
myImage.animate().alpha(0.0f).setDuration(5000)
.withEndAction(() -> myImage.setVisibility(View.INVISIBLE));
}
if (isFadeIn) {
myImage.animate().alpha(1.0f).setDuration(5000).withStartAction(() -> {
myImage.setVisibility(View.VISIBLE);
myImage.setAlpha(0.0f);
}).withEndAction(() -> myImage.setAlpha(1.0f));
} else {
myImage.animate().alpha(0.0f).setDuration(5000)
.withStartAction(() -> {
myImage.setAlpha(1.0f);
myImage.setVisibility(View.VISIBLE);
})
.withEndAction(() -> myImage.setVisibility(View.INVISIBLE));
}
我花了好几个小时试图了解为什么会出现这些行为。
fadeInAnimation.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
myImage.setVisibility(View.VISIBLE);
}
@Override public void onAnimationEnd(Animation animation) { }
@Override public void onAnimationRepeat(Animation animation) { }
});
fadeOutAnimation.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) { }
@Override public void onAnimationEnd(Animation animation) {
myImage.setVisibility(View.INVISIBLE);
}
@Override public void onAnimationRepeat(Animation animation) { }
});
fadeInAnimation.setDuration(5000);
fadeOutAnimation.setDuration(5000);
...
if (isFadeIn) {
myImage.startAnimation(fadeInAnimation);
} else {
myImage.startAnimation(fadeOutAnimation);
}
但是它太冗长,我不喜欢它,但是现在我坚持使用它,我只是想了解其他代码的问题。