php短视频源码之瀑布流分割线左右间距问题及解决代码

admin3年前PHP教程30

下面展示一下非瀑布流的item布局情况,每个item的高度都是一样的,所以
他的index就是左右左右,position所对应的itemView就是准确的,
左0,右1,左2,右3,以此类推…
这时候我们可以用下面代码即可成功设置分割线。

2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/**
 
* 第一列设置左边距为space,右边距为space/2 (第二列反之)
 
*/
 
if (parent.getChildLayoutPosition(view) % 2 == 0) {
 
outRect.left = space;
 
outRect.right = space / 2;
 
} else {
 
outRect.left = space / 2;
 
outRect.right = space;
 
}

瀑布流的position是根据列的高度哪个小而来加载下一个position在哪里,
上面瀑布流图我们可以看到,左0,右1 之后,2到右边了,那是因为
第二列的高度小于第一列的高度,所以就加载到第二列,以此类推,
下面的高度可以说就是随机展示的,谁也不知道接下来要怎么判断分割线,
所以用上面的那些代码是行不通的,
大招来了,我们可以通过StaggeredGridLayoutManager.LayoutParams
里的getSpanIndex()来判断,这个方法不管你高度怎样,
他都是左右左右开始排列的,如下代码。

2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
StaggeredGridLayoutManager.LayoutParams params = (StaggeredGridLayoutManager.LayoutParams) view.getLayoutParams();
/**
* 根据params.getSpanIndex()来判断左右边确定分割线
* 第一列设置左边距为space,右边距为space/2 (第二列反之)
 
*/
 
if (params.getSpanIndex() % 2 == 0) {
 
outRect.left = space;
 
outRect.right = space / 2;
 
} else {
 
outRect.left = space / 2;
 
outRect.right = space;
 
}

到此这篇关于php短视频源码之瀑布流分割线左右间距问题及解决代码的文章就介绍到这了,更多相关php短视频源码内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

免责声明:本文内容来自用户上传并发布,站点仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。请核实广告和内容真实性,谨慎使用。

相关文章

php遍历对象的方法

对于php来说,foreach是非常方便好用的一个语法,几乎对于每一个PHPer它都是日常接触最多的请求之一。那么对象是否能通过foreach来遍历呢?答案是肯定的,但是有个条件,那就是对象的遍历只能...

php封装pdo实例以及pdo长连接的优缺点总结

一、前言最近需要写脚本来实现崩溃日志的入库,不出所料又是脱离于框架的,那么行吧,咱们只能自己封装数据库相关操作了。博主这里选择了封装pdo操作数据库相关。二、为什么选择pdo众所周知的,php在早期的...

PHP实现两种排课方式

两种排课方式:固定每周的固定时间上课总共上几个周,每周上课时间比较个性化第一种排课比较好实现,简要代码如下:/**     * 生成日期列表 ...

Laravel中Kafka的使用详解

 本文并没有kafka的安装教程,本文是针对已经安装kafka及其配置好kafka的php拓展并且使用laravel框架进行开发项目,配置一个可供laravel框架使用的生产及消费者类.以下...

PHP格式化显示时间date()函数案例讲解

date("yyyyMMdd",time()) date() 函数  功能:用于格式化时间,返回一个字符串。 语法:string date( string fo...

棋牌软件被恶意攻击应该怎么办?租用泉州高防大带宽服务器怎么样?

对于目前来说,棋牌软件深受广大群众的喜爱,无聊闲暇时消磨消磨时间,尤其是受当下疫情影响,很多朋友休息之余为了安全着想都会在家待着,而大部分朋友在无聊之时会选择下载一个棋牌软件,这也导致了很多朋友都想自...