自上一次發表 《媽媽不再用擔憂個人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節省了你大量的時間,能否給我買一袋咖啡,讓我更加有動力去把它作得更好呢,謝謝!😊