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

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

) 1、onDraw() 方法 onDraw方法 : 提供给 RecyclerView 画布上绘制合适装饰 , 方法绘制任何内容, 都在 item 布局组件绘制之前绘制, 绘制内容都被...: 提供给 RecyclerView 画布上绘制合适装饰, 方法绘制任何内容, 都在 item 布局组件绘制之后绘制, 绘制内容会覆盖 item 布局, 显示 item 布局上层 ;...Adapter 适配器关联数据 , 调用 RecyclerView.getChildAdapterPosition(View) , 方法获取适配器该 View 组件位置 ; 然后将特殊位置可以设置不同参数...(View) * 方法获取适配器该 View 组件位置 ; * * @param outRect 接受输出矩形...(View) * 方法获取适配器该 View 组件位置 ; * * @param outRect 接受输出矩形

51500

RecyclerView获取点击位置接口被废弃了?

仔细一看,holder.adapterPosition这不就是我们平时RecyclerView里面用于获取点击位置方法么,常用写法如下: holder.itemView.setOnClickListener...不过MergeAdapter是RecyclerView 1.2.0版本才新增,而官网目前RecyclerView最新稳定版本还是1.1.0。...从名字上就可以看出来了,一个是用于获取元素位于当前绑定Adapter位置,一个是用于获取元素位于Adapter绝对位置。 如果觉得我上面的解释还不够清楚,通过下面的示例看一下你立马就能明白了。...很明显,我们获取点击位置是元素位于BodyAdapter位置。...结果一目了解,获取点击位置是元素位于合并后Adapter位置

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

getBoundingClientRect方法获取元素页面相对位置

获取元素位置可以用 offset 或 getBoundingClientRect,使用 offset 因为兼容性不好,比较麻烦,offset获取位置会形成“回溯”。...1.使用语法: element.getBoundingClientRect(); 方法没有任何参数,返回值为对象类型。...2.IE8及以下浏览器,返回值对象包含属性值有: top::元素上边缘距离文档顶部距离; right: 元素右边缘距离文档左边距离; bottom:元素下边缘距离文档顶部距离; left:...元素左边缘距离文档左边距离; 3.IE9以上、谷歌、火狐等浏览器,返回值对象包含属性值有: top: 元素上边缘距离文档顶部距离; right:元素右边缘距离文档左边距离; bottom:元素下边缘距离文档顶部距离...width 和 height 属性解决方法IE8及以下浏览器,可以通过计算得到元素宽和高: 如: var dom = document.querySelector("#demo"), r

3.8K20

RecyclerView】 七、RecyclerView.ItemDecoration 条目装饰 ( getItemOffsets 边距设置 )

方法说明 ---- RecyclerView.ItemDecoration 是抽象类 , 当前使用 onDraw , onDrawOver , getItemOffsets 3 个方法 , 上一篇博客...【RecyclerView】 五、RecyclerView.ItemDecoration 条目装饰 ( 简介 | onDraw | onDrawOver | getItemOffsets ) 二、RecyclerView.ItemDecoration...源码注释解析 已经分析了 RecyclerView.ItemDecoration 方法 , 并查看了其源码 , 这 3 个方法都是空方法 , 因此这里实现方法时 , 不必再使用 super 调用父类方法...; 调用 RecyclerView 对象 getChildAdapterPosition 方法 , 传入 item 组件 View 参数 , 就可以获取当前位置 ; @Override...获取当前设置边距位置 int currentPosition = parent.getChildAdapterPosition(view); } 获取到当前设置位置之后 , 根据不同位置设置不同偏移量

5.2K00

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

` 添加装饰 即绘制更多内容,丰富ItemViewUI效果 ---- 2....state) { ... } // 方法3:onDrawOver() // 作用:同样是绘制内容,但与onDraw()区别是:绘制图层最上层 @Override...onDraw()绘制会先于ItemViewonDraw()绘制,所以如果在ItemdecorationonDraw()绘制内容ItemView边界内,就会被ItemView遮挡住。...所有ItemView分别获取它们位置信息,然后再绘制内容 此处遍历RecyclerViewItemView(即Child view),并不是 Adapter 设置每一个 item,而是可见...获取RecyclerViewChild view个数 int childCount = parent.getChildCount(); // 遍历每个Item,分别获取它们位置信息

1.7K21

RecyclerView必知必会

但是RecyclerView出现会让很多开源项目被废弃,例如横向滚动ListView, 横向滚动GridView, 瀑布流控件,因为RecyclerView能够实现所有这些功能。...我们来看下面的代码: 根据View绘制流程,首先调用RecyclerView重写draw()方法,随后super.draw()即调用Viewdraw(),该方法会先调用onDraw()(这个方法...获取合适View,在后文回收机制中会介绍该方法具体实现。...那么如何在不破坏原有Adapter实现情况下完成呢? 这里引入装饰器(Decorator)设计模式,该设计模式通过组合方式,不破话原有类代码情况下,对原有类功能进行扩展。...,该方法内部调用了makeAndAddView(),实现如下: 其中,getActiveView()是从mActiveViews获取合适View,如果获取到了,则直接返回,而不调用obtainView

4.6K20

RecycleView从0到0.1 | 技术创作特训营第一期

onBindViewHolder: 通过方法提供ViewHolder,将数据绑定到ViewHolder。getItemCount: 获取数据源总条数。...MyHolder : 这是RecyclerView.ViewHolder实现类,用于初始化item布局子控件。需要注意是,在这个类构造方法需要传递item布局View给父类 。...StaggeredGridLayoutManager: 瀑布流布局,分散对齐网格显示项目。...我们可以RecyclerViewAdapter自定义一个接口,并创建一个供其他类设置监听方法。...当我们定义好接口后,我们onBindViewHolder()方法为holder.itemView(itemView是列表每一个item项)设置了点击事件监听,然后onClick()判断是否有用户传递过

37711

RecyclerView 必知必会

那么onDraw()是怎么被调用呢?还有ItemDecoration还有一个方法onDrawOver(),该方法也可以被重写,那么onDraw()和onDrawOver()之间有什么关系呢?...根据View绘制流程,首先调用RecyclerView重写draw()方法,随后super.draw()即调用Viewdraw(),该方法会先调用onDraw()(这个方法RecyclerView...其中next()调用了getViewForPosition(currentPosition),该方法是从RecyclerView回收机制实现类Recycler获取合适View,在后文回收机制中会介绍该方法具体实现...runPendingAnimations(),animateAddImpl()是执行add动画具体方法,其实就是将itemView透明度从0变到1(animateAdd()已经将view透明度变为...那么如何在不破坏原有Adapter实现情况下完成呢? 这里引入装饰器(Decorator)设计模式,该设计模式通过组合方式,不破话原有类代码情况下,对原有类功能进行扩展。

2.5K70

【Android应用开发】RecycleView API 翻译 (文档翻译)

Position(位置): 适配器(Adapter)数据项目位置. Index(索引): 一个已经附加子组件索引getChildAt(int)方法中使用. 与Position形成对比....你可以依赖这些位置, 这些位置与用户当前屏幕上看到位置是一致.例如, 如果你屏幕上有一个项目列表, 用户要求使用第五个项目元素, 你可以使用这些方法, 因为这些方法对应位置就是用户看到位置....例如, 如果你触发了 ViewHolder 点击事件, 想要去获取适配器项目元素, 你应该使用 getAdapterPosition() 方法....注意这些方法可能不能去计算适配器位置, 如果在 notifyDataSetChanged() 方法被调用, 同时新布局没有被计算时....该类定义了条目发生改变时 适配器 动画效果. class RecyclerView.ItemDecoration 项目装饰, 适配器数据集中指定项目显示组件上, 添加一个特别的图画 和 布局.

1.3K40

RecyclerView 必知必会

但是RecyclerView出现会让很多开源项目被废弃,例如横向滚动ListView, 横向滚动GridView, 瀑布流控件,因为RecyclerView能够实现所有这些功能。...根据View绘制流程,首先调用RecyclerView重写draw()方法,随后super.draw()即调用Viewdraw(),该方法会先调用onDraw()(这个方法RecyclerView...其中next()调用了getViewForPosition(currentPosition),该方法是从RecyclerView回收机制实现类Recycler获取合适View,在后文回收机制中会介绍该方法具体实现...runPendingAnimations(),animateAddImpl()是执行add动画具体方法,其实就是将itemView透明度从0变到1(animateAdd()已经将view透明度变为...那么如何在不破坏原有Adapter实现情况下完成呢? 这里引入装饰器(Decorator)设计模式,该设计模式通过组合方式,不破话原有类代码情况下,对原有类功能进行扩展。

4.1K90

RecyclerView】 八、RecyclerView.ItemDecoration 条目装饰 ( onDraw 和 onDrawOver 绘制要点 )

文章目录 一、onDraw 和 onDrawOver 绘制要点 二、onDraw 方法示例 三、onDrawOver 方法示例 四、完整代码示例 五、RecyclerView 相关资料 一、onDraw...和 onDrawOver 绘制要点 ---- onDraw 和 onDrawOver 方法原理类似 , 都是基于 Canvas 进行绘制 , 这个 Canvas 画布大小与 RecyclerView..., 并针对不同序号代表 item 条目进行不同边距设置 ; Canvas 绘图坐标系 ( 0, 0 ) 位置RecyclerView 左上角位置 ; 使用 Canvas 绘图时 ,...对象相对于父容器 RecyclerView 坐标值 , 也就是左上右下四个坐标 ; ⑤ 根据获取坐标值进行绘图 ; 绘图代码示例 : 以 onDraw 方法为例 , onDrawOver 绘图逻辑类似..., 奇数序号元素上绘制红色矩形遮罩 ; 该方法绘制元素覆盖 item 组件元素 ; 四、完整代码示例 ---- RecyclerView.ItemDecoration 代码示例 : package

1.3K00

Android RecyclerView控件添加分隔线

extends RecyclerView.ItemDecoration { // 在这个方法绘制分隔线,这个方法会在RecyclerView子项绘制完成之前被调用 @Override...(c, parent, state); } // 也可以在这个方法绘制分隔线,这个方法会在RecyclerView子项绘制完成之后被调用 @Override public...c, parent, state); } // 这个方法用于对子项绘制位置进行一些必要调整或者对子项进行一些其他调整。..., state); } } 其实,onDraw 和 onDrawOver 方法我们只需要重写其中一个就行了,因为两个方法唯一不同就是调用先后问题。...:对RecyclerView子项排布方式进行判断,两个方法分别用于绘制线性布局分隔线和网格布局分隔线,这两个方法主要是通过布局和控件位置来计算出myDivider绘制区域一些位置信息,如果对于布局和控件熟悉的话就没什么难点了

2K10

郭神抽丝剥茧心法修炼: 深剖RecyclerView

processAppeared,方法,它调用了 RecyclerView#animateAppearance 方法,动画任务最终也交给了 RecyclerView.ItemAnimator,RecyclerView.ItemAnimator...这里有必要说明一下,一些删除或者新增操作,通过使用适配器通知删除或者新增方法,最终还是会通知界面进行重绘。...1.5 onDraw RecylcerView onDraw 方法比较简单,仅仅绘制了 ItemDecoration,同样需要用户自定义实现: public void onDraw(Canvas...Adapter#onCreateViewHolder 方法,这也是我们继承适配器 Adapter 必须要实现抽象方法,通常,我们继承 Adapter 不会只创建 ViewHolder,还会做子 View...除了适配器模式之外,Adapter 还使用观察者模式,这一点可以从 RecyclerView#setAdapter 方法可以看出,设置适配器时候,会对旧 Adapter 取消注册监听器,接着对新

1.3K20

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

如下图所示: #######onDraw(Canvas c, RecyclerView parent, State state) 这个方法可以实现类似绘制背景效果,绘制东西是显示item下层,一般配合...个数; onDraw(),onDrawOver()方法针对 RecyclerView本身,初始化只会调用一次; 当滑动列表至第10条过程,可以看到onDraw(),onDrawOver()...我们先看下这两个方法 RecyclerView调用位置,从下面也可以看得出来decoration onDraw(),child view onDraw(),decoration onDrawOver...这样就会调用RecyclerViewonDraw(),onDrawOver()方法,因此ItemDecoration这两个方法就在不断调用。...获取绘制坐标的时候,主要在于确定纵坐标的起始位置距离顶部大小。

4.2K40

【Android 事件分发】ItemTouchHelper 事件分发源码分析 ( 绑定 RecyclerView )

条目中装饰 , 可以条目组件 底部 上层 绘制 Canvas 图形 // ItemTouchHelper 继承 RecyclerView.ItemDecoration... ItemTouchHelper.setupCallbacks 方法 , 调用了 mRecyclerView.addItemDecoration(this); 方法 , 为当前 RecyclerView...设置条目装饰 , 该装饰可以条目组件 底部 上层 绘制 Canvas 图形 , 具体方法如下 : public class RecyclerView extends ViewGroup implements...parent, @NonNull State state) 方法是绘制方法 , 方法调用了 void onDraw(@NonNull Canvas c, @NonNull RecyclerView...} 参考 Android 官方提供 RecyclerView.ItemDecoration 实现类 DividerItemDecoration , 该类重写了 onDraw 方法 , 其中调用了

37120

SpringAOP——Advice方法获取目标方法参数

获取目标方法信息 访问目标方法最简单做法是定义增强处理方法时,将第一个参数定义为JoinPoint类型,当该增强处理方法被调用时,该JoinPoint参数就代表了织入增强处理连接点。...方法调用切点方法返回值:原返回值:改变后参数1 、bb,这是返回结果后缀 从结果可以看出:在任何一个织入增强处理,都可以获取目标方法信息。...注意,定义returning时候,这个值(即上面的returning="returnValue"returnValue)作为增强处理方法形参时,位置可以随意,即:如果上面access方法签名可以为...我们AdviceManager定义一个方法,该方法第一个参数为Date类型,第二个参数为String类型,该方法执行将触发上面的access方法,如下: //将被AccessArgAdviceTest...,注意args参数后面的两个点,它表示可以匹配更多参数。例子args(param1, param2, ..),表示目标方法只需匹配前面param1和param2类型即可。

5.9K20
领券