头部悬停的recyclerView

好长一段时间没有写博客了,都有点手生了,看来坚持一件事情真的是挺不容易的,废话也不多说了,前段时间有个朋友问我,想要实现一个功能,类似于闲鱼首页的那种效果,头部选项栏向上滑动,选项栏悬停在顶部不被滑出屏幕外这样的效果,之前也做过类似的功能,不过用的是listview,listview用起来确实挺方便的,但是谷歌提供了更强大的recyclerview我们也应该与时俱进不是么。好了先不说废话了,先看看效果。

头部悬停的recyclerView

这个是未滑动的效果,再来看看滑动之后的效果。

头部悬停的recyclerView

先说下这种效果的思路吧,未滑动之前选项栏就是一个头部试图,也可以做成item多布局(就是在适配器中判断当item的position==0的时候,加载的是选项栏这个布局),然后在recyclerView的当前布局中也画一个一模一样的选项栏,不过这个选项栏需要在recyclerView的上面,父布局可以是帧布局或者相对布局,其实说到这里有的人应该都已经明白了,对,接下来只需要监听recyclerView的滑动让RecyclerView当前布局的选项栏显示隐藏就ok了。现在给大家贴上部分代码。

mEasyRecylerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
    @Override
    public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
        super.onScrollStateChanged(recyclerView, newState);
    }

    @Override
    public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
        super.onScrolled(recyclerView, dx, dy);
        RecyclerView.LayoutManager layoutManager = recyclerView.getLayoutManager();
        int currentposition= layoutManager.getPosition(layoutManager.getChildAt(0));
        if(currentposition>=1){
            ll_toolbar.setVisibility(View.VISIBLE);
        }else{
            ll_toolbar.setVisibility(View.GONE);
        }
    }
});

相信这段代码也很容易看懂,我也就不在阐述了。其他的代码我也就不往上面放了,因为基本上就是recyclerView的普通写法。