Skip to content

li504799868/FloatItemRecyclerView

Repository files navigation

FloatItemRecyclerView and FloatItemListView

实现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());

FloatItemListView扩展滑动监听:

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();
}

如果您觉得不错,感谢打赏一个猪蹄:

如果在使用过程中遇到问题或者有更好的建议,欢迎发送邮件到:

lzp-541@163.com

About

实现RecyclerView的item添加悬浮层的效果

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published