Android-UI的100个Demo练习:8

这几天都在折腾RecyclerView添加分组在最开始使用BaseRecyclerViewAdapterHelper这个类库来解决问题
使用它有个条件得继承MultiItemEntity,分组也得在添加model一个Group标记,对代码有入侵不说,我们还有很多不同的类型例如空出一个之类的,都使用model标记,删除的时候巨痛苦。
前几天看到Android仿微信通讯录:悬停头部分组列表**受到启发,但里面的是LinearLayoutManager.应用场景没有覆盖到自身情况,干脆自己写一个
ItemDecoration有三个方法需要用到的

  1. onDraw每次滚动时都会调用到,在这里画出分栏的图形
  2. onDrawOver每次滚动时都会调用到,这里画出的图形最位于View的最顶层,下面的图层都会被覆盖
    3 .getItemOffsets每次显示新的cell会调用,用于控制cell的margin,这里用于空出分栏高度的位置
    下面记得一步步实现的方式
  3. 为分栏预留位置,由于使用的是GridLayoutManager,需要判断所在行是不是包含Group标记(也可以抽象成类似UICollectionView的dataSource一样通过外部判断)
Paste_Image.png
  1. 画出分栏图形

小心的是onDraw不会帮忙迭代, 我是用First和Last分别找到当前需要绘制的rect,然后上色

Paste_Image.png
  1. 最后画出顶部的分栏和产生推动的效果

displayHeaderRect是一个SparseArrayCompat用于记录当前屏幕分栏的Rect, Rect的坐标和iOS不太一样所以需要更新top和bottom才会有效果

Paste_Image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,669评论 4 61
  • 星期五,今天老公过来陪我上班,叫他一个人上几个小时,他不愿意,好吧!只能两个人一起上班了,不过两个人一起上好过一个...
    慧蘭阅读 1,391评论 0 1
  • 01 一直我就特别想找一些引导性的儿童启蒙app,也因此去关注一些育儿或者下载不...
    熊孩子的后花院阅读 5,227评论 0 2
  • 一壶酒的思维 文/灵璧曙光 把借口挪了一下距离 我看着天…… 谁会认为我想着大地 聪明的人总是以为 自己的思维在这...
    灵璧曙光阅读 1,751评论 2 3
  • 测试文章1
    mkmg阅读 1,670评论 2 0

友情链接更多精彩内容