RecycleView 有下拉刷新情况下实现悬浮框效果
2017-12-15 17:24
274 查看
简介
1.当需求需要下拉刷新时,在Activity布局中添加一个和adapter布局一样的悬浮框布局,在代码中显示隐藏控制;
2.当需求没有下拉刷新时,就简单了,直接在adapter布局中定义一个悬浮框布局就可以了;
效果图
代码如下:
private int mSuspensionHeight;
private int mCurrentPosition = 0;
tvHeader:Activity布局中的tv;
mSuspensionBar: activity 布局中的悬浮框Layout;
recyclerView.addOnScrollListener(new RecyclerViewListener());
class RecyclerViewListener extends RecyclerView.OnScrollListener{
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
mSuspensionHeight = mSuspensionBar.getHeight();
}
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
View viewPosition = mLinearLayoutManager.findViewByPosition(mCurrentPosition);
/**
*处理position为0的情况
*/
if (viewPosition != null) {
if (viewPosition.getTop() == 0 && mLinearLayoutManager.findFirstVisibleItemPosition() == 1
|| dy == 0 && mLinearLayoutManager.findFirstVisibleItemPosition() == 0) {
tvHeader.setVisibility(View.GONE);
return;
}
}
tvHeader.setVisibility(View.VISIBLE);
if (显示悬浮框布局的判断条件) {
View view = mLinearLayoutManager.findViewByPosition(mCurrentPosition + 1);
if (view != null) {
if (view.getTop() <= mSuspensionHeight) {
mSuspensionBar.setY(-(mSuspensionHeight - view.getTop()));
} else {
mSuspensionBar.setY(0);
}
}
}
if (mCurrentPosition != mLinearLayoutManager.findFirstVisibleItemPosition()) {
mCurrentPosition = mLinearLayoutManager.findFirstVisibleItemPosition();
4000
mSuspensionBar.setY(0);
tvHeader.setText(”赋值“);
}
}
}
1.当需求需要下拉刷新时,在Activity布局中添加一个和adapter布局一样的悬浮框布局,在代码中显示隐藏控制;
2.当需求没有下拉刷新时,就简单了,直接在adapter布局中定义一个悬浮框布局就可以了;
效果图
代码如下:
private int mSuspensionHeight;
private int mCurrentPosition = 0;
tvHeader:Activity布局中的tv;
mSuspensionBar: activity 布局中的悬浮框Layout;
recyclerView.addOnScrollListener(new RecyclerViewListener());
class RecyclerViewListener extends RecyclerView.OnScrollListener{
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
mSuspensionHeight = mSuspensionBar.getHeight();
}
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
View viewPosition = mLinearLayoutManager.findViewByPosition(mCurrentPosition);
/**
*处理position为0的情况
*/
if (viewPosition != null) {
if (viewPosition.getTop() == 0 && mLinearLayoutManager.findFirstVisibleItemPosition() == 1
|| dy == 0 && mLinearLayoutManager.findFirstVisibleItemPosition() == 0) {
tvHeader.setVisibility(View.GONE);
return;
}
}
tvHeader.setVisibility(View.VISIBLE);
if (显示悬浮框布局的判断条件) {
View view = mLinearLayoutManager.findViewByPosition(mCurrentPosition + 1);
if (view != null) {
if (view.getTop() <= mSuspensionHeight) {
mSuspensionBar.setY(-(mSuspensionHeight - view.getTop()));
} else {
mSuspensionBar.setY(0);
}
}
}
if (mCurrentPosition != mLinearLayoutManager.findFirstVisibleItemPosition()) {
mCurrentPosition = mLinearLayoutManager.findFirstVisibleItemPosition();
4000
mSuspensionBar.setY(0);
tvHeader.setText(”赋值“);
}
}
}
相关文章推荐
- Android5.x:RecycleView(一):实现ListView + GridView + StaggeredGridLayou效果
- Android进阶——自定义View之继承系统控件实现自带删除按钮动画效果和软键盘自动悬浮于文本框下方
- ObservableScrollView+TabPageIndicator+fragment 实现顶部悬浮菜单效果
- swipRefreshLayout结合Recycleview实现下拉刷新和上拉加载
- Android RecyclerView实现头部悬浮吸顶效果
- Android RecyclerView打造悬浮效果的实现代码
- android上使用RecyclerView实现顶部悬浮标题效果的Sticky Title View
- 关于如何通过recycleview实现聊天界面的效果
- RecycleView利用谷歌内置的SwipRefreshLayout实现下拉刷新和滑动加载
- 实现RecyclerView下拉刷新和上拉加载更多以及RecyclerView线性、网格、瀑布流效果演示
- Android对ScorllView滚动监听,实现美团、大众点评的购买悬浮效果
- 利用ViewDragHelper实现菜鸟裹裹的悬浮按钮效果
- RecycleView实现的Gallery画廊效果(图片制作成圆角)
- 自己封装的工具类,使用原生SwipeRefreshLayout+RecycleView实现下拉刷新和加载更多
- Android上使用RecyclerView实现顶部悬浮标题效果的Sticky Title View
- RecycleView实现瀑布流的效果
- RecycleView 实现瀑布流效果
- android Material Design之 ToolBar+TabLayout+recycleView的效果实现
- Android view滑动悬浮固定效果实现代码示例
- SwipeRefreshLayout+RecycleView实现下拉刷新上拉加载