android 史上最好用的吸顶库,支持复杂的吸顶自定义 View

Posted Wei_Leng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android 史上最好用的吸顶库,支持复杂的吸顶自定义 View相关的知识,希望对你有一定的参考价值。

StickyHeaderForRecyclerView

项目地址:lizijin/StickyHeaderForRecyclerView 

简介: 史上最好用的吸顶库,支持复杂的吸顶自定义 View,单类型吸顶功能,多类型吸顶功能,指定位置吸顶功能,设置吸顶偏移量,无缝配合 AppBarLayout

更多:作者   提 Bug   

标签:

StickyHeaderForRecyclerView

这可能是目前为止设计最精良的 RecyclerView 吸顶库

  • 支持复杂吸顶 View 功能
  • 支持单类型吸顶功能
  • 支持多类型吸顶功能
  • 支持开启和关闭吸顶功能
  • 支持指定位置吸顶功能
  • 支持设置吸顶偏移量
  • 支持兼容 ItemDecoration 和 ItemAnimator
  • 支持 RecyclerView 数据变化和滚动到指定位置
  • 支持自定义 RecyclerView 上 Item 吸顶 top
  • 支持配合 AppBarLayout 使用

更改日志

  • 修复吸顶 view 高度很小时,滑动时容易被回收掉,快速往下滑,吸顶消失的问题
  • 增加复杂吸顶 View 的 Demo
  • 修复下滑到顶部,吸顶 View 不消失的 bug
  • 增加重建吸顶时,如果下一个有可能吸顶的 View 与当前吸顶区域有重叠,吸顶向上联动
  • 增加了处理 RecyclerView 数据变化时,重建吸顶功能
  • 增加了处理 RecyclerView 滑动到指定位置时,重建吸顶功能

TODO LIST

  • 支持吸顶 View 复杂动画功能
  • 自动注册 StickyHeaderModel,避免手动注册
  • 不在布局文件中声明吸顶 FrameLayout,程序自动处理
  • 支持头部导航效果,注册监听事件,吸顶 Model 增加 index 属性
  • 支持横向 RecyclerView 吸顶

效果

  • 支持单类型吸顶功能

  • 支持多类型吸顶功能

  • 支持开启和关闭吸顶功能

 

  • 支持指定位置吸顶功能

  • 支持设置吸顶偏移量

  • 支持自定义 RecyclerView 上 Item 吸顶边界自定义

使用教程

  1. 安装依赖

  2. 项目 build.gradle 增加 maven 地址

allprojects 
    repositories 
        jcenter()
        maven 
            url "https://dl.bintray.com/xuanyudaddy/sticky-header-recyclerview"
        
        google()
    
    tasks.withType(Javadoc) 
        enabled = false
    

  • app 目录下 build.gradle 增加依赖
dependencies 
   implementation 'com.xuanyu.stickyheader:stickyheader:1.0.1'
 
  1. 布局文件增加吸顶 Layout,header.layout 为吸顶布局的占位布局
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/recycler.view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"></androidx.recyclerview.widget.RecyclerView>


    <FrameLayout
        android:id="@+id/header.layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"></FrameLayout>



</FrameLayout>
  1. 创建 BaseStickyHeaderModel 的子类,泛型对应的 Book 为 RecyclerView ItemView 对应的实体类
public class BookStickyHeaderModel extends BaseStickyHeaderModel<Book> 

    @Override
    public View getStickyView(Context context) 
        System.out.println("jiangbin getView");
        BookView bookView = new BookView(context);
        return bookView;
    

    @Override
    public void onBindView(View view, Book data) 

        ((BookView) view).setData(new Book(data.name + "吸顶"));
    

  1. 编写 Adapter 实现 StickyHeaderAdapter 接口,重写 transferToStickyHeaderModel 方法,默认返回 StickyHeaderHelper.transferToStickyHeaderModel(this, position)。您可以做其它特殊处理
public class NamingStickyHeaderAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> implements StickyHeaderAdapter<Naming> 
    @Override
    public BaseStickyHeaderModel<Naming> transferToStickyHeaderModel(int position) 
        return StickyHeaderHelper.transferToStickyHeaderModel(this, position);
    
 
  1. 在 RecyclerView#setAdapter 之后,初始化吸顶代码。需要调用 StickyHeaderRegistry.registerTransfer 将需要吸顶 Item 对应的 Bean 和它对应的 StickyHeaderModel 一一对应起来
 StickyHeaderHelper.init(mRecyclerView, mHeaderLayout, 0);
 StickyHeaderRegistry.registerTransfer(Book.class, BookStickyHeaderModel.class);
  1. 结束!Enjoy it!!

欢迎您访问 github 项目地址https://github.com/lizijin/StickyHeaderForRecyclerView,如果您使用本库,请提出您的宝贵意见。

如果你有任何问题,欢迎您关注微信公众号。我将第一时间给您答疑解惑 

以上是关于android 史上最好用的吸顶库,支持复杂的吸顶自定义 View的主要内容,如果未能解决你的问题,请参考以下文章

Android 实现分组标题吸顶效果,支持上下左右padding

Android 实现分组标题吸顶效果,支持上下左右padding

CoordinatorLayout实现嵌套滑动吸顶效果

CoordinatorLayout实现嵌套滑动吸顶效果

CoordinatorLayout实现嵌套滑动吸顶效果

RecyclerView 悬浮吸顶效果实现,支持数据绑定及Touch事件