实现RecyclerView和ListView的item添加悬浮层的效果
demo中包含FloatItemRecyclerViewDemo,FloatItemListViewDemo,以及在ViewPager中使用的优化方案。
添加gradle依赖:
compile 'com.lzp:FloatItemRecyclerView:1.2.0'
1、实现FloatViewShowHook接口
public interface FloatViewShowHook<V extends RecyclerView> {
/**
* 当前item是否要显示floatView
*
* @param child itemView
* @param position 在列表中的位置
*/
boolean needShowFloatView(View child, int position);
V initVideoPlayRecyclerView();
}
2、通过设置OnFloatViewShowListener,可以监听悬浮层的显示状态和滑动状态
public interface OnFloatViewShowListener {
/**
* FloatView被显示
*/
void onShowFloatView(View floatView, View child, int position);
/**
* FloatView被隐藏
*/
void onHideFloatView(View floatView, View child);
/**
* FloatView被移动
*/
void onScrollFloatView(View floatView);
/**
* FloatView被处于Fling状态
*/
void onScrollFlingFloatView(View floatView);
/**
* FloatView由滚动变为静止状态
*/
void onScrollStopFloatView(View floatView);
}
3.设置Hook和Listener:
FloatItemRecyclerView<RecyclerView> recyclerView = findViewById(R.id.recycler_view);
recyclerView.setFloatViewShowHook(this);
recyclerView.setFloatView(getLayoutInflater().inflate(R.layout.float_view, (ViewGroup) getWindow().getDecorView(), false));
recyclerView.setOnFloatViewShowListener(this);
recyclerView.setAdapter(new MyAdapter());
FloatItemListView floatItemListView = findViewById(R.id.recycler_view);
floatItemListView.setFloatViewShowHook(this);
floatItemListView.setFloatView(getLayoutInflater().inflate(R.layout.float_view, (ViewGroup) getWindow().getDecorView(), false));
floatItemListView.setOnFloatViewShowListener(this);
floatItemListView.setAdapter(new MyAdapter());
public void addOnScrollListener(AbsListView.OnScrollListener listener) {
if (!onScrollListeners.contains(listener)) {
onScrollListeners.add(listener);
}
}
public void removeOnScrollListener(AbsListView.OnScrollListener listener) {
onScrollListeners.remove(listener);
}
public void clearOnScrollListener(AbsListView.OnScrollListener listener) {
onScrollListeners.clear();
}
如果您觉得不错,感谢打赏一个猪蹄:
如果在使用过程中遇到问题或者有更好的建议,欢迎发送邮件到: