php短视频源码,流式布局实现的相关代码

import android.content.Context
import android.util.AttributeSet
import android.util.Log
import android.view.View
import android.view.ViewGroup
import androidx.core.view.isEmptyclass FlowLayout:ViewGroup {constructor(context: Context):super(context){}constructor(context: Context, attrs: AttributeSet?):super(context, attrs){}//定义控件之间的间隔private val space = 30//定义所有的二维数组保存所有的View 方便等会儿layoutvar allViews: MutableList<MutableList<View>>  = mutableListOf()//定义数组保存一排的Viewvar everyLineViews: MutableList<View> = mutableListOf()//定义一个数组保存每一行的最大高度,方便等会儿布局使用private var allLineHeightList = mutableListOf<Int>()override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {/*** 由于onMeasure()方法的多次调用,多以要把这些变量定义在onMeasure()中,防止出错*///定义所有行中最长的长度(相当于父容器的宽带)var maxWidth = 0//定义父容器的长度var parentHeight = 0//定义父容器的宽度var parentWidth = 0//定义一个变量记录当前行最大的高度var currentWidth = space// 定义一个变量记录已经使用了多少宽度var currentHeight = space//定义一个变量保存所有的高度(相当于父容器的高度)var totalHeight = 0//重新初始化(由于变量定义在外部)allViews = mutableListOf()everyLineViews = mutableListOf()super.onMeasure(widthMeasureSpec, heightMeasureSpec)//获取父容器的最大宽高val parentMaxWidth = MeasureSpec.getSize(widthMeasureSpec)Log.v("zj","父容器最大宽度:${parentMaxWidth}")val parentMaxHeight = MeasureSpec.getSize(heightMeasureSpec)//不会用到,但还是写了//确定子控件的measureSpecfor(i in 0 until childCount){var child = getChildAt(i)//得到每个子控件的布局参数val lp = child.layoutParams//得到子控件的widthSpecvar childWidthSpec = getChildMeasureSpec(widthMeasureSpec,2*space,lp.width)//得到子控件的heightSpecvar childHeightSpec = getChildMeasureSpec(heightMeasureSpec,2*space,lp.height)//测量每个子控件child.measure(childWidthSpec,childHeightSpec)/*** 流式布局最核心的算法*///在这一行添加if(currentWidth+space+child.measuredWidth <= parentMaxWidth){currentWidth+=child.measuredWidth+spacecurrentHeight = Math.max(currentHeight,(child.measuredHeight+space))}else{    //换到下一行//将上一行的添加到保存所有View的数组中allViews.add(everyLineViews)//重置上每一行的数组  但是不能用清空 ,必须重新分配内存(由于指针问题)everyLineViews = mutableListOf()//将上一行的高度加到总的高度里面totalHeight+=currentHeight//将上一行的最大高度存到数组中allLineHeightList.add(currentHeight)maxWidth = Math.max(maxWidth,currentWidth)//进行下一行的初始化currentHeight = child.measuredHeight+spacecurrentWidth = child.measuredWidth+space}//添加孩子到数组中everyLineViews.add(child)}//判断是否还有不满一行的控件没有被计算到if(everyLineViews.size!=0){currentWidth = 0currentHeight = 0for (i in 0 until everyLineViews.size){//得到每个子控件val child = everyLineViews[i] //这个bug时候来修改过来的,解决最后一行高低总是不对的问题;错误版本是child = getChild(i)//当前宽度等于余下的每个子控件的宽度加总 再加上 space间隔currentWidth += child.measuredWidth+space//当前这一行的高度就是这一个控件的高度+space与上一次保存的最大行高相比,谁大取谁currentHeight = Math.max(currentHeight,child.measuredHeight+space)}//余下的这一行的总宽度再与前面的n行的最长的比较,谁大取谁maxWidth = Math.max(maxWidth,currentWidth)//算出总的高度totalHeight+=currentHeightallLineHeightList.add(currentHeight)//将这一行添加到数组中allViews.add(everyLineViews)}//设置父容器的最终尺寸parentHeight = totalHeight+spaceparentWidth = maxWidth+spacesetMeasuredDimension(parentWidth,parentHeight)}override fun onLayout(changed: Boolean, l: Int, t: Int, r: Int, b: Int) {var left = spacevar top = spacevar right = 0var bottom = 0Log.v("aa","子控件的个数:${childCount}")Log.v(("aa"),"添加所有视图有几行:${allViews.size}")for (i in 0 until allViews.size){//得到每一行的控件//进入第一行的布局for(j in 0 until allViews[i].size){//得到每一行中的每个控件val child = allViews[i][j]right = left+child.measuredWidthbottom = top + child.measuredHeightchild.layout(left,top,right,bottom)left+=child.measuredWidth+space}//计算下一行的相关位置top += allLineHeightList[i]left = space}}
}

以上就是php短视频源码,流式布局实现的相关代码, 更多内容欢迎关注之后的文章

php短视频源码,流式布局(代码)相关推荐

  1. 引燃抖音短视频源码开发项目的几点原因

    抖音上线一年多,在经历了2018年春节之后,抖音的用户量从4000万保障了50%达到6000万量级.直到现在,抖音已经完全开启了"全民抖音"的时代,成为短视频行业发展的领头军,抖音 ...

  2. 长短视频之争,长视频平台和短视频源码谁主沉浮?

    文/布谷安妮 来源/山东布谷鸟网络 飞速飙升的用户流量,让以抖音和快手为代表的短视频收割了大量的关注度,从个体用户到媒体,短视频源码在短短时间内成为互联网行业最炙手可热的话题.腾讯重新启用微视,百度推 ...

  3. 短视频源码仿抖音短视频APP源码短视频平台源码短视频源码

    [WoShop仿抖音短视频源码的主要功能] 1.短视频带货:关联商品的短视频封面会有商品标识,短视频内容中会弹出商品链接 2.直播带货:短视频源码支持直播功能,直播间内可开启带货功能 3.邀请赚钱:用 ...

  4. 短视频火热态势下,抖音短视频源码受到持续关注

    曾经,文字图片是最为广泛的信息载体,而现在,短视频和直播行业的火爆态势证明了视频这一信息载体的魅力.在过去的两年里,抖音打下了国内的江山又侵占了美国.印度.日本等国家的社交 APP排行榜,聚集沉淀了不 ...

  5. 一对一交友源码,仿抖音短视频源码,搭建的秘密你了解多少?

    一对一交友源码,仿抖音短视频源码,搭建的秘密你了解多少? 5G技术马上到来,现在直播遇到的一些问题,比如延迟.卡顿.掉线等,很有可能这些情况就不复存在了.而且,其他的一些高科技产品会运用到直播过程中, ...

  6. 抖音短视频源码火爆!引来BAT全面入局短视频APP开发

    之前我们聊过,"两微一抖"的短视频大战,抖音短视频的持续火爆引起了腾讯.微博的重点关注,随后微信更是全面"封杀"抖音.两家公司更是针对火热的抖音短视频,推出了自 ...

  7. (H5+安卓+ios)直播app系统源码,直播商城带货源码,方维直播app系统,直播短视频源码

    商品介绍 (H5+安卓+ios)直播app系统源码,直播商城带货源码,方维直播app系统,直播短视频源码,本系统有三个版本:带商城直播系统,带H5直播系统,和一般的直播短视频系统,默认带H5版本系统 ...

  8. 直播源码和短视频源码,相亲相爱的一家人

    直播源码和短视频源码,相亲相爱的一家人 从直播的百播大战,到如今的趋于稳定:从短视频的兴起,到如今的竞争发展.直播和短视频两条线,开始相交,直播里面添加短视频功能,短视频里面也添加了直播. 在直播里面 ...

  9. 快餐文化短视频源码行业竞争激烈,短视频发展任重道远

    随着移动互联技术的兴起,形式多样的短视频源码软件为受众开辟了短视频时代,赋予视频以新的时代内涵.梨视频.美拍.快手.抖音等 APP充斥了人们的生活,因此不少人群对视频软件产生了依赖感.短视频源码APP ...

  10. 短视频源码,仿抖音源码,助您在短视频行业开辟出一条新路

    短视频源码,仿抖音源码,助您在短视频行业开辟出一条新路 复制代码 在短视频行业,抖音当之无愧的T0阶层.致使腾讯老大也眼红这块蛋糕,打压抖音,重启自己的短视频--微视来进行竞争.短视频的火爆事宜得益于 ...

最新文章

  1. 学python要多少钱-培训python大概要多少钱?
  2. python websocket实现消息推送_Python Websocket消息推送---GoEasy
  3. C与C++在const用法上的区别
  4. 【代码学习】lua+redis分布式锁代码实现实例
  5. 现金贷平台倒闭后,借的钱是否可以不还?
  6. LNMP一键安装包在安装完成后的一些安全设置
  7. 节约内存编程方式操作系统(全概念)
  8. Mysql 基础命令
  9. org.apache.struts.chain.commands.InvalidPathException: No action config found for the specified url.
  10. js_开发小技巧记录(一)
  11. 电话机器人源码可以低成本高效率为OEM代理前景保驾护航
  12. 软件测试技术+HR面试
  13. OSChina 周一乱弹 —— 最萌碰瓷
  14. android模拟器用户比例,海马玩发布模拟器报告:学生人群与IT从业者占64%
  15. 台式电脑怎么添加计算机硬盘,如何给台式电脑硬盘重新分区
  16. python在单词表中查找包含所有元音字母aeiou的单词并打印
  17. clearcase命令收集
  18. 基于mini2440嵌入式linux上整合一套Domoticz智能家居系统(八)使用domoticz+mosquitto+Android客户端实现控制mini2440上的LED(一)
  19. SD客户信用值(信贷限额、应收款 预收账款、销售值、信贷风险总额、可用余额)
  20. 如何才能让一个B2C企业销售额高速成长呢?

热门文章

  1. QT基本操作(简易教程)
  2. 谷歌浏览器安装 elasticsearch-head 插件
  3. isis协议_[IS-IS] IS-IS路由协议的基本知识及配置
  4. linux虚拟核显,PVE直通核显搭建虚拟Win10 HTPC避坑指南
  5. 电路设计基础知识(一)[转]
  6. java测试脚本怎么写_Jmeter测试脚本编写(初学者熟悉篇)
  7. 简单的自动化测试脚本
  8. 微服务网关——设计篇
  9. 数学建模工具篇(一)-LaTeX软件入门
  10. 武汉大学计算机学院电子与通信工程,武汉大学电子信息学院信息与通信工程