Android view.animate().translationY()填充空白

Android view.animate().translationY()填充空白,android,android-animation,Android,Android Animation,我正在通过视图动画类设置标题视图的动画,如下所示: view.animate() .translationY(-view.getBottom()) .alpha(0) .setDuration(HEADER_HIDE_ANIM_DURATION) .setInterpolator(new DecelerateInterpolator()); 问题在于,im translating视图下方的视图没有填充已翻译视图的空白: 我的布局看起来像这样: <LinnearLayout>

我正在通过视图动画类设置标题视图的动画,如下所示:

view.animate()
.translationY(-view.getBottom())
.alpha(0)
.setDuration(HEADER_HIDE_ANIM_DURATION)
.setInterpolator(new DecelerateInterpolator());
问题在于,im translating视图下方的视图没有填充已翻译视图的空白:

我的布局看起来像这样:

<LinnearLayout>
   <include layout"toolbar" /> //included layout which is the view translated
   <FrameLayout  /> //fragment container
</LinnearLayout>
        ObjectAnimator animator = ValueAnimator.ofFloat(0, -view.getBottom());

        animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
            @Override
            public void onAnimationUpdate(ValueAnimator animation) {
                toolbar.setTranslationY(-animation.getAnimatedValue)
                mFrameLayout.layout(mFrameLayout.getLeft(), animation.getFraction() * mToolbar.getHeight(), mFrameLayout.getRight(), mFrameLayout.getBottom());
            }
        });
        toolbar.startAnimation(animator);

//包含已转换视图的布局
//碎片容器

如何解决此问题?

是否尝试淡出工具栏? 尝试手动操作框架布局。 大概是这样的:

<LinnearLayout>
   <include layout"toolbar" /> //included layout which is the view translated
   <FrameLayout  /> //fragment container
</LinnearLayout>
        ObjectAnimator animator = ValueAnimator.ofFloat(0, -view.getBottom());

        animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
            @Override
            public void onAnimationUpdate(ValueAnimator animation) {
                toolbar.setTranslationY(-animation.getAnimatedValue)
                mFrameLayout.layout(mFrameLayout.getLeft(), animation.getFraction() * mToolbar.getHeight(), mFrameLayout.getRight(), mFrameLayout.getBottom());
            }
        });
        toolbar.startAnimation(animator);

同样的问题,如果我使用相对布局。我不想改变它的高度,只需要翻译它,然后试着改变setY而不是TranslationY。这将移动整个视图,并对其他布局产生影响。也没有区别。视图将移动,而不是其下方的视图,直到不更新下方的图层为止。我认为layout()不会影响视图边界,只是在它被混淆的地方。你需要一个动画师而不是一个动画,然后你可以添加一个UpdateListener。这肯定行得通。如果你愿意,我可以稍后给你一些代码。