如何平移视图,但保持其原始起始位置

How to translate a view, but keep it's original starting position

我正在为视图设置动画,以便在出现键盘时隐藏底部导航栏。

我的问题是我可以将底部导航栏翻译掉,主要的 'message area' 可以跟随它,但在 'message area' 的顶部形成一个间隙。有没有办法翻译,但保持 'message area' 的顶部与操作栏对齐?

这是动画示例和正在形成的间隙:

我的动画代码如下:

if (lowerNavigationBar.getVisibility() == View.VISIBLE) {

    lowerNavigationBar.animate()
            .translationY(lowerNavigationBar.getHeight()).setDuration(1000).start();
    viewPager.animate()
            .translationY(lowerNavigationBar.getHeight()).setDuration(1000).start();
    lowerNavigationBar.setVisibility(View.INVISIBLE);   

}
else{

    lowerNavigationBar.setVisibility(View.VISIBLE);
    lowerNavigationBar.animate()
            .translationY(0).setDuration(1000).start();
    viewPager.animate()
            .translationY(0).setDuration(1000).start();

}

我最终测试了两件事,第一件事来自 this stack overflow answer,它调整了布局的实际高度,它确实有效,但并不像我希望的那样流畅。

第二个是 this library,它使用 ValueAnimators 并提供更流畅的动画以及更多功能。我最终坚持使用这个库,因为它在视觉上提供了更好的结果并且易于定制。