淡出Android上的AlphaAnimation错误> 5

时间:2016-08-11 13:11:18

标签: android animation

以下代码用于淡出View。它适用于Android SDK< 21。

AlphaAnimation animOut = new AlphaAnimation(1, 0); //fromAlpha, toAlpha
animOut.setDuration(500);
animOut.setAnimationListener(new Animation.AnimationListener()
{
    public void onAnimationStart(Animation animation){}
    public void onAnimationRepeat(Animation animation){}
    public void onAnimationEnd(Animation animation)
    {
        view.setVisibility(View.INVISIBLE);
    }
});
view.startAnimation(animOut);

奇怪的是,对于Android 5.0及更高版本,它并没有像预期的那样工作。动画开始后,动画View立即变为不可见。 我该如何解决这个问题?

修改:如果AlphaAnimation onAnimationEnd() TranslateAnimation已启动,则会出现此错误。

2 个答案:

答案 0 :(得分:1)

您可以使用ViewPropertyAnimator

应该使用较新的API(12+)并且您不必费心设置View的可见性。

像这样(淡出):

view.animate().alpha(0).setDuration(500).start();

要淡入,请为您的初始Alpha值设置动画:

view.animate().alpha(1).setDuration(500).start();

要添加AnimatorListener,您可以调用setListener()方法:

view.animate().alpha(0).setDuration(500)
            .setListener(new Animator.AnimatorListener() {

    // ...

}).start();

答案 1 :(得分:0)

使用AnimationUtils。例如:

AlphaAnimation animOut = AnimationUtils.loadAnimation(this, android.R.anim.fade_out);
animOut.setDuration(500);
animOut.setAnimationListener(new Animation.AnimationListener()
{
    public void onAnimationStart(Animation animation){}
    public void onAnimationRepeat(Animation animation){}
    public void onAnimationEnd(Animation animation)
{
    view.setVisibility(View.INVISIBLE);
}
});
view.startAnimation(animOut);