简单高效的实现知识星球悬浮滚动列表

本文不长,阅读大约五分钟


之前答应了星友去实现一个星球,这次带来的也是星球的一个页面的效果,想必很多人见过,就是列表悬浮的Item,我们来看下Gif效果图:

       640?wx_fmt=gif      

你可能感兴趣还有精华主题这两个Item是需要悬浮的,那么,我们该如何实现这种效果呢?其实很简单,这里教大家一种很方便的方法,继续往下看。


首先,我们要实现这个列表,这个列表的话,一个RecyclerView即可实现,不过Item比较多,我们来看下有多少层:


1.广告轮播层

2.悬浮层

3.感兴趣星球层

4.悬浮层

5.精华层

6.排行导航层

7.排行层


可想而知,这个适配器有多麻烦,那么我们一步步来实现吧,首先是定义Type

      640?wx_fmt=jpeg      

适配器类型的定义是为了更好的插入不同的Item,有些封装好的RecyclerView可以插入HeadView或者FootView实际上就是利用此原理,那么我们接下来往下看:

       640?wx_fmt=jpeg

在onCreateViewHolder中,我们可以看到,根据不同的Type我创建了若干个ViewHolder,这也是为了下面的铺垫:

       640?wx_fmt=jpeg      

在onBindViewHolder中,我将数据一一绑定,这样只需要我们模拟一些数据,基本上就可以看到一个UI的效果了


       640?wx_fmt=png      


但是我们现在还有非常重要的一个步骤没有实现,就是如何实现悬浮,正如标题所讲,我们要简单高效的实现它,市面上很多都是各种自定义RecyclerView或者自己定义View来处理,我这只是取巧的一种方式,可以看到:

       640?wx_fmt=jpeg      

可以看到,在这里我通过监听addOnScrollListener回调,来确定当前屏幕上可见的itme,如果可见item小于第一个悬浮,那么就隐藏否则就显示我们的悬浮bar,大致就是这个思路,如果到了该悬浮的bar的时候就把数据悬浮,其实最终的实现就是一个覆盖的布局,我们来看下:

       640?wx_fmt=jpeg      

所以可以看到,我们的mSuspensionBar就是一个相对布局,最终我们运行一下:

       640?wx_fmt=gif      

好了,到此,我们本篇完结了,需要源码的可点击阅读原文,欢迎加入我的星球【Hi Android】


进入星球你可以做什么? 


1.带你学习Android

2.解决工作中的疑难杂症

3.一起探索程序员如何赚钱

4.初学者可配套视频辅导 

5.有机会线下交流聚会

640?wx_fmt=jpeg






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值