# TimeLine 瀑布流时间轴,项目中主要用到了StaggerGridLayoutManager。 ## 添加依赖 ``` groovy implementation 'com.vivian.widgets:TimeLineItemDecoration:1.5' ``` ## 使用方法 - 给`RecyclerView`设置`StaggerGridLayoutManager` ``` mRecyclerView.setLayoutManager(new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL)); ``` - 给RecyclerView添加分割线: [ItemDecoration.java](https://github.com/vivian8725118/TimeLine/blob/master/app/src/main/java/com/vivian/timeline/timeline1/ItemDecoration.java)。第二个参数用来设置item间隔,比如100px。 ``` mRecyclerView.addItemDecoration(new ItemDecoration(this,100)); ``` 项目中提供了两种样式的分割线,第一种是 [ItemDecoration.java](https://github.com/vivian8725118/TimeLine/blob/master/app/src/main/java/com/vivian/timeline/timeline1/ItemDecoration.java)(图一),第二种是[DotItemDecoration.java](https://github.com/vivian8725118/TimeLine/blob/master/app/src/main/java/com/vivian/timeline/itemdecoration/DotItemDecoration.java) (图二) ``` DotItemDecoration mItemDecoration = new DotItemDecoration .Builder(this) .setOrientation(DotItemDecoration.VERTICAL)//如果LayoutManager设置了横向,那么这里也要设置成横向 .setItemStyle(DotItemDecoration.STYLE_DRAW)//选择dot使用图片资源或者用canvas画 .setTopDistance(20)//单位dp .setItemInterVal(10)//单位dp .setItemPaddingLeft(10)//如果不设置,默认和item间距一样 .setItemPaddingRight(10)//如果不设置,默认和item间距一样 .setDotColor(Color.WHITE) .setDotRadius(2)//单位dp .setDotPaddingTop(0) .setDotInItemOrientationCenter(false)//设置dot居中 .setLineColor(Color.RED)//设置线的颜色 .setLineWidth(1)//单位dp .setEndText("END")//设置结束的文字 .setTextColor(Color.WHITE) .setTextSize(10)//单位sp .setDotPaddingText(2)//单位dp.设置最后一个点和文字之间的距离 .setBottomDistance(40)//设置底部距离,可以延长底部线的长度 .create(); ``` 如果需要根据item所在**列数**进行操作,可以实现[SpanIndexListener](https://github.com/vivian8725118/TimeLine/blob/master/app/src/main/java/com/vivian/timeline/itemdecoration/SpanIndexListener.java)接口 ``` mItemDecoration.setSpanIndexListener(new SpanIndexListener() { @Override public void onSpanIndexChange(View view, int spanIndex) { view.setBackgroundResource(spanIndex == 0 ? R.drawable.pop_left : R.drawable.pop_right); } }); ``` ## 截图