recyclerview分割线实现类RecyclerView.ItemDecoration

首先,要知道recyclervie画线的基本原理。
先画背景然后设置item的偏移坐标,把画的背景露出来。
具体在recyclrview怎么实现呢?
通过rv.addItemDecoration方法设置一个RecyclerView.ItemDecoration类
这个类有两个方法分别是负责画背景和负责设置item的偏移坐标
分别是画背景方法

onDraw(@NonNull Canvas c, @NonNull RecyclerView parent, @NonNull RecyclerView.State state)

设置item的偏移坐标

getItemOffsets(@NonNull Rect outRect, @NonNull View view, @NonNull RecyclerView parent, @NonNull RecyclerView.State state)

我们怎么给不同的item设置不同的偏移坐标呢根据下面代码得到item adapter positon

int childAdapterPosition=parent.getChildAdapterPosition(view);

然后根据你的画背景逻辑调用以下方法设置你想要的偏移量

outRect.set(left, top, right, bottom);

top bottom设置相当于上下两个方向的margin,值越大,这个item与其它的item的间隔就越大。
left right就有点特殊了,它是设置item的挤压空间。怎么说呢,本来你item的空间是(0,100px),如果设置了Left的值为20px则代表item的left方向的空间被挤压,那么现在Item空间就是(20px,100px),左边20px的空间就被挤压了。item被挤压后就会露出背景色区域。我们在在ondraw中画的背景就可以显示出来了。这样就会有种分割线的视觉效果。

注意在画背景景的时候,注意绘制区域,不要有多余区域或冗杂的绘制算法,这样会有更好的性能表现,减少了过度绘制区域。
以下几个api是在绘制背景时常用的api,在onDraw做绘制判段时非常好用。

parent.getChildCount();//当前recyclerview上显示的item的个数
View view = parent.getChildAt(int index);//当前recycleview得到指定排名的item view有了viw就可以得到adapter positon
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值