看到这布局自然会想到用RecyclerView来做,用ItemDecoration绘制日期那条分割线,每行3列的GridLayoutManager
但是有个问题,如果不是正好3列、怎么去控制末尾的留白呢?

我的实现思路是这样的:

GridLayoutManager中有个setSpanSizeLookup方法,getSpanSize返回值就是控制每行有几列的

 gridLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {@Overridepublic int getSpanSize(int position) {return setSpanSize(position, mAdapter.getDatas());}});

不了解的可以转至RecyclerView通过GridLayoutManager实现多样式布局

也就是说使用该方法我可以控制每一行的列数、只要我再控制其长度就OK了

在数据实体中添加一个value、用来记录当前图片和前面差了几个空白,从而确定留白的距离

 private int setSpanSize(int position, List<AlbumBean> listEntities) {int count;int d;if ((position + 1 < listEntities.size()) && position > 0) {if (!listEntities.get(position).getSubId().equals(listEntities.get(position + 1).getSubId())) {mAdapter.getItem(position + 1).value = 2 - (mAdapter.getItem(position).value + position) % 3 + mAdapter.getItem(position).value;d = 2 - (mAdapter.getItem(position).value + position) % 3;if (d == 2) {count = 3;} else if (d == 1) {count = 2;} else {count = 1;}} else {mAdapter.getItem(position + 1).value = mAdapter.getItem(position).value;count = 1;}} else if (position == 0) {if (mAdapter.getDatas().size() > 1) {if ((!listEntities.get(position).getSubId().equals(listEntities.get(position + 1).getSubId()))) {mAdapter.getItem(1).value = 2;count = 3;} else {count = 1;mAdapter.getItem(1).value = 0;}} else {count = 1;}} else {count = 1;}return count;}
完成效果:

Github地址:https://github.com/forvv231
安装包下载:https://fir.im/QQAlbum

一个RecyclerView实现QQ空间相册布局相关推荐

  1. Android学QQ空间相册浏览类型横向滑动效果显示多图片MyHorizontalScrollView

    Android学QQ空间相册浏览类型横向滑动效果显示多图片MyHorizontalScrollView 我们来定制一下吧 布局文件:activity_main.xml <LinearLayout ...

  2. RecyclerView实现QQ空间和微信朋友圈头部刷新效果

    RecyclerView实现QQ空间和微信朋友圈头部刷新效果 老规矩先上图 本篇主要讲RecyclerView实现QQ空间和微信朋友圈头部刷新效果,如果想了解ListView如何实现,请查看上篇:Li ...

  3. php实现qq相册功能,使用javascript如何实现QQ空间相册展示

    本文给大家分享基于javascript制作的qq空间相册展示效果,涉及到html\css布局思维,浮动定位详解,具体实现代码大家参考下本文 知识点:html/css布局思维,浮动/定位详解,大企业标准 ...

  4. QQ空间相册展示特效

    <!doctype html> <html lang="en"> <head> <title>QQ空间相册展示特效<title ...

  5. Python_小林的爬取QQ空间相册图片链接程序

    前言 昨天看见某人的空间有上传了XXXX个头像,然后我就想着下载回来[所以本质上这是一个头像下载程序],但是一个个另存为太浪费时间了,上网搜索有没有现成的工具,居然要注册码,还卖45一套.你们的良心也 ...

  6. 如何备份你的 QQ 空间相册

    领红包方法见文末 周末无聊的时候打开了下久违的QQ空间,那么多年的记录都还在.曾经建的杰伦相册. 想到之前网易相册都关闭了,虽然腾讯家大业大,但万一呢,于是想着把QQ空间的图片都备份下来.于是有了今天 ...

  7. php爬取qq好友,使用php批量抓取QQ空间相册链接

    前言 小杰之前发布的文章<为什么QQ空间与我们渐行渐远?> 里面就提到小杰会抽空备份QQ空间的照片,但是在网上找了很久也没有找到一个有效的工具 作为一个Phper,淦就完事了,所以顶着寒冷 ...

  8. 通过抓包获取QQ空间相册的真实地址,实现空间相册下载。

    在网上找过相关的资料,都不是太全~有些缺漏.所有自己根据网上的再结合自己的修改了下. 1.通过HttpAnalyzerStdV5 分析QQ空间相册的真实地址.一下就是空间相册的地址: 之前在网上看见只 ...

  9. QQ空间将不再支持免费备份原图?附QQ空间相册导出工具合集

    感谢您抽出 .. 阅读本文 小伙伴们注意:公众号的推送机制不再按照时间前后推送了,微信公众号信息流乱序.君哥建议大家把科技毒瘤君公众号置顶(设为星标⭐),以便第一时间看到推送,非常感谢~,方法如下图: ...

最新文章

  1. Python Qt GUI设计:QDrag拖拽数据传输类(基础篇—18)
  2. 一步步构建大型网站架构
  3. mysql 运算符 =,:=,@,@@的含义
  4. python随机生成字符串_python生成随机数、随机字符串
  5. C++的三大特性:封装,继承,多态
  6. mysql ansi_ANSI模式下如何运行MySQL
  7. 以数据为核心的SOC3.0时代到来
  8. Yahoo邮箱中全部邮件的下载保存
  9. webview session不失效_不懂HttpSession对象看这里--乐字节
  10. 【GYM-100889 D】Dicy Numbers【数学推导求解】
  11. vsto从入门到精通--专栏目录
  12. 线性调频信号的脉冲压缩
  13. OSError: inotify watch limit reached
  14. selenium和requests实现12306登录及余票查询
  15. 机器学习在重度抑郁症患者中的应用:从分类到治疗结果预测
  16. 电脑重装系统的几种方法
  17. 【云和恩墨大讲堂】罗海雄 | 如何在不改SQL的情况下优化数据库
  18. Python+Tensorflow+Opencv人脸识别(任意数量人脸)
  19. 新概念1、2英语学习计划
  20. Word 中添加目录的一般方法

热门文章

  1. Google代码实验室
  2. 安装 Motorola ADB Interface 驱动失败的解决办法
  3. wireshark三次握手抓包
  4. 上方山骇客协会算法小组训练题(三) 10.31-11.06
  5. flex布局的对齐方式
  6. requests爬虫实践之安居客二手房屋数据(python实现)
  7. Arcgis ModelBuilder给插值工具设置范围和颜色
  8. 用matlab实现共轭梯度法求解实例,用MATLAB实现共轭梯度法求解实例
  9. linux环境配置git认证
  10. 操作系统第八章笔记---死锁