我使用此方法显示需要淡入或淡出 Animation
的任何视图。
当我通过 false 执行淡出动画时,它完美无缺,但当我通过 true 时,淡入效果不会执行,相反,它只是在没有动画的 500ms 之后出现;
private void setViewTransition(final boolean isVisible, final View view) {
Animation fadeAnim;
if (isVisible) {
fadeAnim = new AlphaAnimation(0.0f, 1.0f);
if (view.getAlpha() == 1.0f) {
return;
}
} else {
fadeAnim = new AlphaAnimation(1.0f, 0.0f);
if (view.getAlpha() == 0.0f) {
return;
}
}
fadeAnim.setDuration(500);
fadeAnim.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
if (isVisible) {
view.setAlpha(1.0f);
} else {
view.setAlpha(0.0f);
}
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
view.startAnimation(fadeAnim);
}
这可能与该问题有关:Android fade in not working从未得到任何答案......
我做错了什么?
答案 0 :(得分:2)
虽然我不完全确定为什么你的方式不起作用。它有点迂回,可能比获得淡入淡出的动画要复杂得多。这是一个非常简洁的方法(对于API 12 +)。
private void setViewTransition(boolean isVisible, View view) {
view.animate().alpha(isVisible ? 1.0f : 0.0f).setDuration(500);
}