动画"将视图移出屏幕"

时间:2016-10-06 14:22:45

标签: android animation

我在一个RelativeLayout中有一个视图,它作为一个Activity的标题栏。

当我滚动下面的列表时,我希望标题栏以一种似乎被滚动(或移动)出屏幕的方式隐藏。这很简单明了。我尝试了两种选择,但它们都不适合我:

  1. 使用默认布局动画。为父ViewGroup设置animateLayoutChanges=true,并在需要时删除标题栏。我得到的效果是淡出标题上的文字,条形消失了。这不是我想要的,因为我不想要文本的淡出。
  2. 使用下面的代码,但我得到的是标题移出后出现的灰色空白。这很难看。

    Animator disappearingAnimation = ObjectAnimator.ofFloat(null, "translationY", 0, -(titleLin.getHeight()));
    LayoutTransition transition = new LayoutTransition();
    transition.setAnimator(LayoutTransition.DISAPPEARING, disappearingAnimation);
    transition.setDuration(LayoutTransition.DISAPPEARING, 600);
    
    titleParent = (ViewGroup) titleLin.getParent();
    titleParent.setLayoutTransition(transition);
    titleLin.setVisibility(View.GONE);
    
  3. 这个简单的动画效果有什么解决方案吗?

1 个答案:

答案 0 :(得分:0)

我找到了答案,事实上它在官方参考中有解释: https://developer.android.com/reference/android/animation/LayoutTransition.html

问题是由布局转换的默认行为引起的:首先动画删除视图,然后为其余部分填充动画。

所以只需将延迟时间设置为零,动画就可以解决它。