首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

RecyclerView 自定义ItemDecoration从入门到实现吸顶效果

作者:Lipt0n 地址:http://www.jianshu.com/p/ce78da3e0ff6 声明:本文是Lipt0n原创,已获授权发布,未经原作者允许请勿转载 RecyclerView...首先新建一个类覆写ItemDecoration里面有三个方法: public class SimpleItemDecoration extends RecyclerView.ItemDecoration...onDrawOver 英文Over的意思…的上面 ,可以理解成是图层关系,item的内容和分割线是第一层(要在第一层画东西要调用onDraw),onDrawOver是第二层,位于onDraw的上面getItemOffsets...但是这个并不是获取RecyclerView所有的item个数,而是当前屏幕可见的item个数。...因为是吸顶效果,所以分割线和传统的分割线一样应该是每个item的上方不是下方 当前屏幕可见的第一个item的Bottom<=item_height(分割线的高度) 说明可见的第一个item的底部已经超出了分割线的高度

1.2K10
您找到你想要的搜索结果了吗?
是的
没有找到

小甜点,RecyclerViewItemDecoration 讲解及高级特性实践

当时它的出现解决了我一个大的需求,这个需求就是电视盒子界面上横向加载应用列表,由于 ListView 没有横向加载的功能,网络上开源的那些 HorizontalListView 又不满足需求,所以我们只能自定义...需要注意的一点是 getItemOffsets 是针对每一个 ItemView, onDraw 方法却是针对 RecyclerView 本身,所以 onDraw 方法中需要遍历屏幕上可见的 ItemView...主要是一些参数的确定,例如 DividerHeight,注意这个 DividerHeight 不是指 ItemView 向上的间隔值,而是相应的 ItemDecoration 的高度。...需要注意的是 onDraw 方法,ItemDecoration ItemView 的下方绘制的,也就是 ItemView 可能会覆盖 ItemDecoration 的内容。...这些角标都是绘制 ItemView 之上的,现在有了 ItemDecoration 我们也可以轻松优雅地实现它。 比如我们要实现一个图书销量排行榜。我们有大概的草图。 ?

1K20

RecyclerView定制:通用ItemDecoration及全展开RecyclerView的实现不同场景RecyclerView实现

,那么,RecyclerView源码中,是怎么用使用ItemDecoration的呢。...的measureChildWithMargins函数,measureChildWithMargins函数会进一步找到addItemDecoration添加的ItemDecoration,通过getItemOffsets...的onDraw函数, RecyclerViewonDraw函数中会调用ItemDecoration的onDraw,绘制分割线或者其他辅助信息,ItemDecoration 支持上下左右四个方向定制占位分割线等信息...parent); } else { ... } } 其实,如果不是特殊的绘制需求,比如显示七彩的,或者图片,完全不需要任何绘制,如果一定要绘制,注意绘制的尺寸区域跟原来getItemOffsets...--ExpandedGridLayoutManager 全展开的网格式RecyclerView的实现跟线性的十分相似,唯一不同的就是确定尺寸的时候,不是将每个child的尺寸叠加,而是要将每一行或者每一列的尺寸叠加

2.5K41

Android RecyclerView八个必会的面试技巧

引言 Android开发领域,RecyclerView是一项强大的工具,用于处理大量数据的高效显示。熟练掌握RecyclerView的知识对于一名Android开发者来说至关重要。...RecyclerView的绘制流程 问题: 能详细描述RecyclerView的绘制流程吗?从数据源到最终显示屏幕上的过程?...这样滑动过程中,可以避免频繁地调用findViewById。当Item被滑出屏幕时,ViewHolder会被复用,不是重新创建。...参考简答: ViewHolder模式: RecyclerView使用ViewHolder模式来缓存视图。当ItemView滑出屏幕时,对应的ViewHolder会被缓存,不是立即销毁。...复用机制: 当新的数据需要显示时,RecyclerView会调用Adapter的onBindViewHolder方法,将新的数据绑定到已存在的ViewHolder上,不是创建新的View。

22320

教你玩转 Android RecyclerView:深入解析 RecyclerView.ItemDecoration类(含实例讲解)

---- 前言 RecyclerView Android开发中非常常用,如果能结合ItemDecoration类使用,那么将大大提高RecyclerView的表现效果 本文全面解析了ItemDecoration...2.1.3 源码分析 RecyclerView本质上是一个自定义ViewGroup,子视图child = 每个ItemView 通过 LayoutManager测量并布局 ItemView public...注意点2: getItemOffsets() 针对是每一个 ItemView的, onDraw() 针对 RecyclerView 本身 解决方案: 使用onDraw()绘制时,需要先遍历RecyclerView...的所有ItemView分别获取它们的位置信息,然后再绘制内容 此处遍历的RecyclerView的ItemView(即Child view),并不是 Adapter 设置的每一个 item,而是可见的...ItemView 的显示效果,即在ItemView 的基础上绘制内容 如分割线等等 2.2.5 实例讲解 实例说明:ItemView设计一个高度为 10 px 的红色分割线 思路 通过getItemOffsets

1.8K21

RecyclerView必知必会

比如有一个需求是屏幕竖着的时候的显示形式是ListView,屏幕横着的时候的显示形式是2列的GridView,此时如果用RecyclerView,则通过设置LayoutManager一行代码实现替换。...,因此万能适配器出现了,他能通过以下方式快捷地创建一个Adapter: 是不是很方便。...因此:ItemDecoration的onDraw()绘制Item之前调用,ItemDecoration的onDrawOver()绘制Item之后调用。...这些方法的内部实际上并不是书写执行动画的代码,而是将需要执行动画的Item全部存入成员变量中,并且返回值为true,然后runPendingAnimations()中一并执行。...我们只需要通过以下方式为原有的Adapter(这里命名为NormalAdapter)添加addHeaderView()和addFooterView()接口: 是不是看起来特别优雅。

4.7K20

RecyclerView 必知必会

比如有一个需求是屏幕竖着的时候的显示形式是ListView,屏幕横着的时候的显示形式是2列的GridView,此时如果用RecyclerView,则通过设置LayoutManager一行代码实现替换。...需要注意的是onCreateViewHolder()中,映射Layout必须为 ? 不能是: ?...因此:ItemDecoration的onDraw()绘制Item之前调用,ItemDecoration的onDrawOver()绘制Item之后调用。...这些方法的内部实际上并不是书写执行动画的代码,而是将需要执行动画的Item全部存入成员变量中,并且返回值为true,然后runPendingAnimations()中一并执行。...我们只需要通过以下方式为原有的Adapter(这里命名为NormalAdapter)添加addHeaderView()和addFooterView()接口: ? 是不是看起来特别优雅。

4.1K90

RecyclerView】 六、RecyclerView.ItemDecoration 条目装饰 ( 简介 | onDraw | onDrawOver | getItemOffsets )

的内部类 , ItemDecoration 顾名思义就是作为 Item 条目装饰用的 ; 可以控制 RecyclerView 条目组件的 边距 , 以及 item 条目组件 底层绘制背景 , item...RecyclerView 的画布上绘制合适的装饰, 该方法中绘制的任何内容, 都在 item 布局组件绘制之后绘制, 绘制的内容会覆盖 item 布局, 显示 item 布局上层 ; void onDrawOver...* 该方法中绘制的任何内容, 都在 item 布局组件绘制之后绘制, 绘制的内容会覆盖 item 布局, * 显示 item 布局上层....方法. */ public abstract static class ItemDecoration { /** * 提供给 RecyclerView...* 该方法中绘制的任何内容, 都在 item 布局组件绘制之后绘制, 绘制的内容会覆盖 item 布局, * 显示 item 布局上层.

53700

RecyclerView 必知必会

比如有一个需求是屏幕竖着的时候的显示形式是ListView,屏幕横着的时候的显示形式是2列的GridView,此时如果用RecyclerView,则通过设置LayoutManager一行代码实现替换。...,因此万能适配器出现了,他能通过以下方式快捷地创建一个Adapter: ?...因此:ItemDecoration的onDraw()绘制Item之前调用,ItemDecoration的onDrawOver()绘制Item之后调用。...这些方法的内部实际上并不是书写执行动画的代码,而是将需要执行动画的Item全部存入成员变量中,并且返回值为true,然后runPendingAnimations()中一并执行。...我们只需要通过以下方式为原有的Adapter(这里命名为NormalAdapter)添加addHeaderView()和addFooterView()接口: ? 是不是看起来特别优雅。

2.5K70

Android-Recyclerview常用总结

概述 android开发中我们不可避免的会用到Recyclerview,用以替代之前的ListView,GridView,Gallery等.它是support:recyclerview-v7中提供的控件...总结也就一句话:高类聚低耦合.RecyclerView已经标准化ViewHolder,我们自定义的ViewHoler需要继承 RecyclerView.ViewHolder,然后构造方法中初始化控件....LayoutManager,布局管理器,控制显示的方式。 ItemDecoration,控制Item间的间隔(允许绘制)。 ItemAnimator,控制Item增删的动画。...这不是重点,重点是我们怎么用它,感兴趣的小伙伴自行百度。...image.png 2.2 如果想来一个稍微有难度的,可以尝试自定义一个ItemDecoration,那么就要 extends RecyclerView.ItemDecoration重写两个方法(其实一般有三个

1.3K30

Android RecyclerView 使用完全解析 体验艺术般的控件

概述 RecyclerView出现已经有一段时间了,相信大家肯定不陌生了,大家可以通过导入support-v7对进行使用。...你想要控制显示的方式,请通过布局管理器LayoutManager 你想要控制Item间的间隔(可绘制),请通过ItemDecoration 你想要控制Item增删的动画,请通过ItemAnimator...RecyclerView基本需要上面一系列的步骤,那么为什么会添加这么多的步骤呢?...但是如果我们有这么个需求,纵屏的时候显示为ListView,横屏的时候显示两列的GridView,我们RecyclerView可以轻松搞定,如果使用ListView去实现还是需要点功夫的~~~ 当然了...甚至某些特殊屏幕,让横向滑动~~再选择一个nice的动画效果,相信这种插件式的编码体验一定会让你迅速爱上RecyclerView

1.6K10

RecyclerView】二、RecyclerView 简介 ( RecyclerView 特点 | RecyclerView 涉及到的类 )

; RecyclerView 样式与适配器等解耦 : RecyclerView 提供了插拔式体验 , 实现的 Adapter 适配器与显示样式设置 高度解耦 , 不改变 Adapter 适配器的前提下..., RecyclerView.Adapter , LayoutManager ; RecyclerView.ViewHolder 用于 定义 RecyclerView 中每个独立元素的显示的组件 ,...创建时不关联数据 , 创建后会在 RecyclerView.Adapter 适配器 的 onBindViewHolder 方法中为关联数据 ; RecyclerView.Adapter 主要作用是...创建 RecyclerView.ViewHolder , 并为绑定数据 ; LayoutManager 布局管理器主要作用是 负责排列各个元素组件 , 可以使用系统提供的 线性布局管理器 LinearLayoutManager...时 , 必须用到的类 , 没有的话 , RecyclerView 便无法显示 ; 此外还有一些可选的设置类 : ItemDecoration , ItemAnimator ; ItemDecoration

4.9K00

Android RecyclerView之粘性头部+点击事件

实现上图列表的粘性头部功能一般通过布局页面额外写粘性头部View,然后通过监听列表的滑动来控制显示隐藏粘性头部View。...如果列表使用RecyclerView实现,那么就能通过自定义ItemDecoration达到目的。下面先简单介绍ItemDecoration。...ItemDecoration ItemDecorationRecyclerView的静态内部类,它包含三个方法: getItemOffsets(Rect outRect, View view, RecyclerView...如下图所示: #######onDraw(Canvas c, RecyclerView parent, State state) 这个方法可以实现类似绘制背景的效果,绘制的东西是显示item的下层,一般配合...RecyclerViewItemDecoration由浅入深 深入理解 RecyclerView 系列之一:ItemDecoration StickHeaderItemDecoration--RecyclerView

4.3K40
领券