AlphaAnimation:淡出作品,但不淡入

时间:2012-05-27 08:16:33

标签: java android alpha

我有以下代码:

public boolean stopped = false;

public void fadeOut(final ImageView obj, final int time, int delay)
    {
        if(stopped)
        {
            stopped = false;
            anim = new AlphaAnimation(1.00f, 0.00f);
            anim.setDuration(time);
            if(delay > 0)
            {
                anim.setStartOffset(delay);
            }
            anim.setAnimationListener(new AnimationListener() {

                @Override
                public void onAnimationStart(Animation animation) {
                    // TODO Auto-generated method stub
                    Log.v("FADER", "Fading out. Duration: " + time + "ms.");

                }

                @Override
                public void onAnimationRepeat(Animation animation) {
                    // TODO Auto-generated method stub

                }

                @Override
                public void onAnimationEnd(Animation animation) {
                    // TODO Auto-generated method stub
                    Log.v("FADER", "Fading out finished.");
                    //obj.setAlpha(255);
                    stopped = true;
                }
            });
            obj.startAnimation(anim);
        }
    }

这个代码工作正常。我的对象(一个ImageView)漂亮地淡出。但是当我运行时:

public void fadeIn(final ImageView obj, final int time, int delay)
    {
        if(stopped)
        {
            stopped = false;
            anim = new AlphaAnimation(0, 1);
            anim.setDuration(time);
            if(delay > 0)
            {
                anim.setStartOffset(delay);
            }
            anim.setAnimationListener(new AnimationListener() {

                @Override
                public void onAnimationStart(Animation animation) {
                    // TODO Auto-generated method stub
                    Log.v("FADER", "Fading in. Duration: " + time + "ms.");

                }

                @Override
                public void onAnimationRepeat(Animation animation) {
                    // TODO Auto-generated method stub

                }

                @Override
                public void onAnimationEnd(Animation animation) {
                    // TODO Auto-generated method stub
                    Log.v("FADER", "Fading in finished.");
                    //obj.setAlpha(255);
                    stopped = true;
                }
            });
            obj.startAnimation(anim);
        }
    }

它不起作用 - 没有消失。ImageView保持完全透明。

为什么这个,任何想法?

对于那些想知道的人,是的,我已经声明并设置了布尔stopped,所以这不是问题,因为当我查看LogCat时,它会在运行{{1}时打印文本功能。

2 个答案:

答案 0 :(得分:1)

解决!

原来,如果您使用[ImageView Object].setAlpha,并将其设置为0,那么当您运行AlphaAnimation时,它会在0[ImageView Object].setVisibility(View.INVISIBLE)的边界之间工作图像的当前alpha。

因此,如果您希望在淡出后保持图像不可见,解决方案是使用View.VISIBLE,并在运行动画之前将其设置回{{1}}。

任务完成。

答案 1 :(得分:0)

您的视图的可见性是否设置为View.VISIBLE?