地表最强 RecyclerView 分割线 Y_DividerItemDecoration 2.0

栏目: IOS · Android · 发布时间: 6年前

内容简介:地表最强 RecyclerView 分割线 Y_DividerItemDecoration 2.0

前言

自上一次发表 《妈妈再也不用担心我的Recyclerview分割线了》 一转眼已经过去两个多月了,中间很多网友提了不少问题和期望。这段时间一直在起早贪黑的赶项目,有时候闲下来偷偷优化了代码但是没提交到github,也没时间写文档。昨天项目第一阶段刚结束我就静下心来将代码重新进行了梳理和改造。写完我就感觉如果上次 1.0 是《妈妈再也不担心》系列的话,那这一次 2.0 称为《地表最强》系列绝不为过。

首先,再次抛出我对分割线最终奥义的理解。

分割线的奥义

无外乎两点:

  • 在哪里显示(哪个Item?Item的上下左右?)
  • 显示什么 (宽多少?啥颜色?padding?...)

1.0 版和 2.0 版最大的区别在于,1.0 对分割线的控制粒度只细分到了每个条目,而 2.0 版是可以单独精确的控制到每一个条目的每一条边的,跟分割线的最终奥义已经很接近了,你说牛逼不牛逼。

先上项目地址...

Y_DividerItemDecoration 项目地址

Y_DividerItemDecoration

接下来我们来详细看一下 2.0 版到底有哪些牛逼的特性...

2.0 Features

  • LinearLayoutManager和GridViewLayoutManager通用
  • 以每个item的上、下、左、右每条边为控制单位
  • 可以单独控制每边是否显示
  • 可以单独控制每边的颜色
  • 可以单独控制每边的宽度
  • 可以单独控制每边的 startPadding 和 endPadding

来看效果图

地表最强 RecyclerView 分割线 Y_DividerItemDecoration 2.0
图1 LinearLayoutManager
地表最强 RecyclerView 分割线 Y_DividerItemDecoration 2.0
图2 大分割线GridViewLayoutManager
地表最强 RecyclerView 分割线 Y_DividerItemDecoration 2.0
图2 普通GridViewLayoutManager
地表最强 RecyclerView 分割线 Y_DividerItemDecoration 2.0
图3 异型GridViewLayoutManager

已解决的 1.0 时存在的问题

  1. 不能设置分割线的padding(如图1)
  2. 分割线作为ItemDecoration占用了item的宽度,分割线细的时候不明显,分割线宽的时候可明显看到有无分割线的item宽度明显不一样(解决方案是将中间分割线的宽度分摊到两边的item上,如图2)

Usage

之所以版本号一下提到了 2.0 ,还有一个很重要的原因就是使用的API发生了很大改变,使用了建造者模式(话说现在不使用建造者模式的开源项目还能叫用户友好的开源项目吗?小调侃一下,勿喷 0.0),更科学清晰了,对比起来 1.0 就是乡村野夫。

Step 1

将依赖加入你项目的build.gradle中:

compile 'com.yanyusong.y_divideritemdecoration:y_divideritemdecoration:2.0'

Step 2

新建一个对象实现抽象类 Y_DividerItemDecoration ,在 getDivider(int itemPosition) 中定义在itemPosition时条目的分割线情况,有无、颜色、宽度、startpadding 和 endpadding 。

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;
        }
    }

Step 3

给RecyclerView添加刚才实现的ItemDecoration

recyclerView.addItemDecoration(new DividerItemDecoration(this));

赞赏

如果Y_DividerItemDecoration节省了你大量的时间,可否给我买一袋咖啡,让我更加有动力去把它做得更好呢,谢谢!:blush:

地表最强 RecyclerView 分割线 Y_DividerItemDecoration 2.0
支付宝

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Rework

Rework

Jason Fried、David Heinemeier Hansson / Crown Business / 2010-3-9 / USD 22.00

"Jason Fried and David Hansson follow their own advice in REWORK, laying bare the surprising philosophies at the core of 37signals' success and inspiring us to put them into practice. There's no jarg......一起来看看 《Rework》 这本书的介绍吧!

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具