【问题标题】:AlphaAnimation: Fade out works, but not fade inAlphaAnimation:淡出作品,但不淡入
【发布时间】:2012-05-27 08:16:32
【问题描述】:

我有以下代码:

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 时,它会在运行 fadeIn() 函数时打印文本。

【问题讨论】:

  • “对于那些想知道的人..” ..发布SSCCE(这将回答他们可能对当前代码提出的任何问题)。
  • @Spiritfyre 请在fadeid调用后发布日志

标签: java android alpha


【解决方案1】:

解决了!

事实证明,如果您使用[ImageView Object].setAlpha,并将其设置为0,那么当您运行AlphaAnimation 时,它会在0 的边界和图像的当前alpha 之间工作。

因此,如果您想在淡出后保持图像不可见,解决方案是使用[ImageView Object].setVisibility(View.INVISIBLE),并在运行动画之前将其设置回View.VISIBLE

任务完成。

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 是的,因为它在应用加载时可见,然后我在onTouchEvent() 中运行fadeIn() 方法,它就会淡出。但是,将不透明度 (Alpha) 设置为 0 是否会改变 View 的可见性?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-15
    • 2013-12-04
    • 1970-01-01
    • 2015-09-16
    • 2017-06-08
    • 2020-12-06
    • 1970-01-01
    相关资源
    最近更新 更多