自上一次发表 《妈妈不再用担忧个人Recyclerview分割线了》 一转眼已通过去两个多月了,中间不少网友提了很多问题和指望。这段时间一直在起早贪黑的赶项目,有时候闲下来偷偷优化了代码可是没提交到github,也没时间写文档。昨天项目第一阶段刚结束我就静下心来将代码从新进行了梳理和改造。写完我就感受若是上次 1.0 是《妈妈不再担忧》系列的话,那这一次 2.0 称为《地表最强》系列毫不为过。javascript
首先,再次抛出我对分割线最终奥义的理解。java
无外乎两点:git
1.0 版和 2.0 版最大的区别在于,1.0 对分割线的控制粒度只细分到了每一个条目,而 2.0 版是能够单独精确的控制到每个条目的每一条边的,跟分割线的最终奥义已经很接近了,你说牛逼不牛逼。github
先上项目地址...ide
Y_DividerItemDecorationgradle
接下来咱们来详细看一下 2.0 版到底有哪些牛逼的特性...优化
之因此版本号一下提到了 2.0 ,还有一个很重要的缘由就是使用的API发生了很大改变,使用了建造者模式(话说如今不使用建造者模式的开源项目还能叫用户友好的开源项目吗?小调侃一下,勿喷 0.0),更科学清晰了,对比起来 1.0 就是乡村野夫。ui
将依赖加入你项目的build.gradle中:this
compile 'com.yanyusong.y_divideritemdecoration:y_divideritemdecoration:2.0'复制代码
新建一个对象实现抽象类 Y_DividerItemDecoration ,在 getDivider(int itemPosition) 中定义在itemPosition时条目的分割线状况,有无、颜色、宽度、startpadding 和 endpadding 。spa
private class DividerItemDecoration extends Y_DividerItemDecoration {
private DividerItemDecoration(Context context) {
super(context);
}
@Override
public Y_Divider getDivider(int itemPosition) {
Y_Divider divider = null;
switch (itemPosition % 2) {
case 0:
//每一行第一个显示rignt和bottom
divider = new Y_DividerBuilder()
.setRightSideLine(true, 0xff666666, 10, 0, 0)
.setBottomSideLine(true, 0xff666666, 20, 0, 0)
.create();
break;
case 1:
//第二个显示Left和bottom
divider = new Y_DividerBuilder()
.setLeftSideLine(true, 0xff666666, 10, 0, 0)
.setBottomSideLine(true, 0xff666666, 20, 0, 0)
.create();
break;
default:
break;
}
return divider;
}
}复制代码
给RecyclerView添加刚才实现的ItemDecoration
recyclerView.addItemDecoration(new DividerItemDecoration(this));复制代码
若是Y_DividerItemDecoration节省了你大量的时间,能否给我买一袋咖啡,让我更加有动力去把它作得更好呢,谢谢!😊