RecyclerView上拉隐藏Toolbar,下拉显示

RecyclerView下拉隐藏Toolbar,上拉显示效果图

先说个事:最近我准备作个开源的博客园android客户端!符合Google最新的material design设计风格的!不知道有没有小伙伴愿意和我一块儿作呢?若是有愿意的,请私信我哦!!!!我还打算天天直播咱们工做的进度,代码,以及BUG等!!




效果图

分析

1.首先看toolbar的滚动,确定用属性动画(没得说)android

2.toolbar什么时候滚动?从动图中咱们能够看到是用户向下滑动必定的距离以后才消失,出现反之!注意:这边的距离手咱们控制随意ssh

3.你们不知道注意了了没,就是在toolbar彻底隐藏的时候,咱们的RecyclerView是彻底显示的,并无距离顶部一个toolbar的高度!!这个地方实现有点取巧 我会在下面的代码中说明!!函数

代码实现

1.首先来为toolbar实现隐藏和显示的两个动画,在这里 我就定义两个函数来分别实现这两个动画。代码过于简单我就直接上代码了:布局

代码

2.如今咱们只要监听RecyclerView的滚动事件来控制toolbar的显示与隐藏就好了!。我简单的来讲一下思路:当用户向下滑动必定的距离(这个距离咱们人为控制),当滑动的距离超过这个距离且当前的toolbar是显示的,就隐藏!反之显示。可是在这里咱们要注意下这个问题:就是这个滑动距离怎么算?
咱们先来看一下recyclerview的滑动监听函数RecyclerView.OnScrollListener他有两个回调函数 咱们只要关注其中的一个就行啦!就是这个:
函数
其中dy就表示垂直方向的滑动距离!了解玩这个以后 我就来看代码动画

代码
在这里,我首先是判断是了当前页面的第一个显示的是不是列表中的第一个,若是是就显示toolbar!另外我还定义了两个变量
isshow和disy,分别表示toolbar是否显示和滑动的总距离。还有个细节要注意下 就是当你触发到某种状态以后 disy必定要清零啊!!切记切记!!!另外,这个disy的总滑动距离的计算方式也要注意下!google

3.到第二步为止,就能够正常的滑动隐藏啦!!(RecyclerView的Adaper本身写啊!!)。要实现效果图中的效果 咱们还差几步!首先呢 ,咱们在布局文件上取点巧,就是用FrameLayout做为父控件布局!看xml布局文件:
xml布局设计

你们能够看到其实recyclerview仍是充满屏幕的 那个toolbar只是咱们叠在上面的!OK,布局文件取巧完了,咱们再来取巧下Adapter!你们应该知道在适配器中有这么个方法: public int getItemViewType(int position) 就是根据位置不一样返回不一样的ViewType 固然这个ViewType是咱们本身定义 在通常的列表中咱们的item view都是相同的,可是有时候会有不相同的view在同一个列表中,此时我么就用到这个方法啦!我如今的解决方案呢,就是在第一个View中添加一个和toolbar相同的view,那么在正常的显示的时候 列表的第一个能被用户看到 而不是被toolbar遮挡住了!!!如今就请你们看一下适配器的代码吧!3d

代码

代码

上面两段代码 就是适配器的所有代码了 !很简单的!你们一看就会拉!!!xml

好了 今天就讲到这儿吧!!!blog

欢迎你们评论啊!!!!!!!!!!!!!!!!!!!!!

相关文章
相关标签/搜索