本文不长,阅读大约五分钟
之前答应了星友去实现一个星球,这次带来的也是星球的一个页面的效果,想必很多人见过,就是列表悬浮的Item,我们来看下Gif效果图:
你可能感兴趣还有精华主题这两个Item是需要悬浮的,那么,我们该如何实现这种效果呢?其实很简单,这里教大家一种很方便的方法,继续往下看。
首先,我们要实现这个列表,这个列表的话,一个RecyclerView即可实现,不过Item比较多,我们来看下有多少层:
1.广告轮播层
2.悬浮层
3.感兴趣星球层
4.悬浮层
5.精华层
6.排行导航层
7.排行层
可想而知,这个适配器有多麻烦,那么我们一步步来实现吧,首先是定义Type
适配器类型的定义是为了更好的插入不同的Item,有些封装好的RecyclerView可以插入HeadView或者FootView实际上就是利用此原理,那么我们接下来往下看:
在onCreateViewHolder中,我们可以看到,根据不同的Type我创建了若干个ViewHolder,这也是为了下面的铺垫:
在onBindViewHolder中,我将数据一一绑定,这样只需要我们模拟一些数据,基本上就可以看到一个UI的效果了
但是我们现在还有非常重要的一个步骤没有实现,就是如何实现悬浮,正如标题所讲,我们要简单高效的实现它,市面上很多都是各种自定义RecyclerView或者自己定义View来处理,我这只是取巧的一种方式,可以看到:
可以看到,在这里我通过监听addOnScrollListener回调,来确定当前屏幕上可见的itme,如果可见item小于第一个悬浮,那么就隐藏否则就显示我们的悬浮bar,大致就是这个思路,如果到了该悬浮的bar的时候就把数据悬浮,其实最终的实现就是一个覆盖的布局,我们来看下:
所以可以看到,我们的mSuspensionBar就是一个相对布局,最终我们运行一下:
好了,到此,我们本篇完结了,需要源码的可点击阅读原文,欢迎加入我的星球【Hi Android】
进入星球你可以做什么?
1.带你学习Android
2.解决工作中的疑难杂症
3.一起探索程序员如何赚钱
4.初学者可配套视频辅导
5.有机会线下交流聚会