前言
主要思路是为RecycleView添加addOnScrollListener监听,然后改变悬浮条的位置即可实现。
提示:以下是本篇文章正文内容
代码如下(示例):
主要代码如下(示例):
mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
//获取悬浮条的高度
mSuspensionHeight = mSuspensionBar.getHeight();
}
@Override
public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
//对悬浮条的位置进行调整
//找到下一个itemView
View view = layoutManager.findViewByPosition(mCurrentPosition + 1);
if (view != null){
if (view.getTop() <= mSuspensionHeight){
//需要对悬浮条进行移动
mSuspensionBar.setY(-(mSuspensionHeight-view.getTop()));
}else{
//保持在原来的位置
mSuspensionBar.setY(0);
}
}
if (mCurrentPosition != layoutManager.findFirstVisibleItemPosition()){
mCurrentPosition = layoutManager.findFirstVisibleItemPosition();
updateSuspensionBar();
}
}
});
updateSuspensionBar();
private void updateSuspensionBar() {
Picasso.with(this)
.load(getAvatarResId(mCurrentPosition))
.centerInside()
.fit()
.into(mSuspensionIv);
mSuspensionTv.setText("粥可温 " + mCurrentPosition);
}
推荐阅读
About