android - 在淡出后调用removeView()时,LinearLayout变得可见

时间:2012-05-01 20:13:56

标签: android android-linearlayout fadeout

我有一个需要在删除之前淡出的视图,这是代码:

private void startViewFadeOut(final View v, final LinearLayout layout)
{
    AnimationTask fadeTask = new AnimationTask(_handler,
                                               FADE_OUT_DURATION
                                               , FADE_PERIOD)
    {
        @Override
        protected boolean onRun(float progress)
        {
            float fadeAlpha = 1 - progress;
            v.setAlpha(fadeAlpha);

            if (progress >= 1f)
            {
                layout.removeView(v);  -- line A
                return false;
            }
            return true;
        }
    };
    fadeTask.start();
}

AnimationTask只是Runnable的包装器。 淡出效果很好,但是在A行,这个视图会闪烁,再次变得可见,然后消失,我试图使用v.setVisibility(View.GONE),它不能正常工作。

有人对此有任何想法吗?

1 个答案:

答案 0 :(得分:0)

您的示例中有点不清楚,但我怀疑如果您将runnable发布到活动而不是创建一个单独的任务,那么这一切都会更好。所以它们都将在同一个线程中。

我也肯定会使用setVisibility(view.gone)。