我在MotionLayout中有一个recyclerView和一个“视图”,以便该视图显示在屏幕底部的recyclerView之上。我将onScrollListener添加到了recyclerView中,这样当我向上滚动RecyclerView时,视图就会隐藏。代码是这样的:
RecyclerView recyclerView;
View v;
@Override
protected void onCreate(Bundle savedInstanceState)
{
//initialise views here
recyclerView.addOnScrollListener(new RecyclerView.onScrollListener(){
@Override
public void onScrolled (RecyclerView recyclerView, int dx, int dy)
{
if(dy > 0)
{
slideDown();
}
else if(dy < 0)
{
slideUp();
}
}
@Override
public void onScrollStateChanged (RecyclerView recyclerView, int newState)
{
}
});
}
public void slideUp()
{
v.clearAnimation();
ObjectAnimator.ofFloat(v, "ScaleY", 1 ).setDuration(200).start(); // to revert back
}
public void slideDown()
{
v.clearAnimation();
ObjectAnimator.ofFloat(v, "ScaleY", -1 ).setDuration(200).start(); //to hide back
}
我在这里不使用BottomNavigationBehaviour,因为我不能使其成为Coordinator布局的子级。我还指定了运动布局约束中的“视图”。
测试: 当我向上滚动recyclerView时,仅在recyclerView停止滚动之后才开始slideDown动画。我不要这个行为如果我更改slideDown()中的代码以将视图设置为不显示而没有任何动画,则视图在我开始滚动时便会消失;它不等待recyclerView停止。
这种行为对我来说似乎很奇怪。有什么我想念的吗?