淡入淡出不工作但淡出动画可在Android上运行

我使用此方法来显示需要 fade infade out 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从未得到任何答案......

我究竟做错了什么 ?

回答(1)

2 years ago

虽然我不完全确定为什么你的方式不起作用 . 它有点迂回,可能比获得淡入淡出的动画要复杂得多 . 这是一种非常简洁的方式(对于API 12) .

private void setViewTransition(boolean isVisible, View view) {
    view.animate().alpha(isVisible ? 1.0f : 0.0f).setDuration(500);
}