如何平移视图,但保持其原始起始位置
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 并提供更流畅的动画以及更多功能。我最终坚持使用这个库,因为它在视觉上提供了更好的结果并且易于定制。
我正在为视图设置动画,以便在出现键盘时隐藏底部导航栏。
我的问题是我可以将底部导航栏翻译掉,主要的 '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 并提供更流畅的动画以及更多功能。我最终坚持使用这个库,因为它在视觉上提供了更好的结果并且易于定制。