00:00
行,这个我们搞定以后呢,下边开始做这个第二个事情,给每一个子视图呢,指定呃,显示的这个位置了,行,那这块呢,我们就可以这样了,哎,我写一个for循环,然后I等于零,I小于呢,On will.s。这相当于是不是我们一共是每一个啊,每变了一次,是不是对应着每一行呀。便利。嗯,一次对应一行元素。好,那在这里边的话呢,嗯,我们呢,就可以先把这个all views.get一下指定的I,取出这一行元素构成的集合,啊,我这呢,再叫learn list,跟上面应该就重名了。重名了啊,那我再换一个来。啊,取出这一行元素构成的集合。
01:03
哎,当前行构成的这个集合,然后我们再写一个for循环。嗯。我西式。接接呢小于那views点三。嗯,好,这呢,就是我试图去取这一行的每一个元素。啊,那我们这呢,就是learn wills.get一下指定的接。啊,这就我们具体的这个child view了。哎,我们最终目的呢,是要给我们这个child view去调用一下left,哎,关键呢,就是写你这个左,哎上。有。哎,行。哎,关键的就是这几个值。好,那下面呢,重点就是看看这几个值怎么给它啊,那那行了,我们还看一下这个图吧。
02:07
比如说现在啊,我们就从最初的外层一层放I等于零,内层一层放接等于零,那就是第一个元素。啊,第一个元素,就比如这里的一。那第一个元素的这个左上。右下。那这个应该是多少?哎,我对我们要找的是不是这个点啊,那应该是我们这个一的,是不是这个左边距。就是是吧,啊,那top呢,就是上边距吧,啊这个相对来讲简单一点,那我们就在这儿呢,左边距上边距,那这好像又得用到一下。这个参数了是吧,嗯。我们上面这个。哎,这个我们看看它啊,我这写到这个放循环里了啊,获取当年这个视图的这个边距值,然后还得CTRLC一下。
03:00
在这呗。啊,获取它的边距值啊,边界值啊,那我们这里边儿这个in的一个left,针对于第一个元素来讲,那就是我们这个MP,它的。After Mar。嗯,然后呢,T一个top,就是你那个MP.top Mar。没错吧,就说第一个元素啊,然后呢,第一个元素的这个右下。右下,那其实你就先说右吧,右的话呢,其实就是这个这个位置啊。嗯,这个值啊,这个值应该是不是刚才你左边的这个left,再加上一下宽度就可以了吧。哎,就行,所以我们这儿呢这样写。等于left,再加上一下你本身这个child view。Get一下这个measure的一个外。这样吧。行,嗯,然后的话呢,嗯,再接着int型的一个bottom,这个bottom不就类似了吗?泡,再加上你本身这个child view。
04:05
一个高度嘛。这样就行,这是我们说的是第一个元素啊。好,第一个元素完以后,我们假设哈,第二个元素没有换行,那就意味着我们还在这个内存的方循环里边是接加加了接变成一了,那我们现在考虑第二个元素,那第二个元素呢,也会同样的进来,左上右下。啊,那左上右下的时候呢,你先咔他看看他的这个左。他所应该是不是刚才这个值。再加上一下你的。嗯,你自己的这个左边距,自己这个左边距呢,在这里边已经写了这个逻辑了是吧。啊,那这里边儿就差一个,是不是把那个一的,就刚才你那个的整体上站的这个距离得算出来。对吧,哎,得这样想哈,那这样的话呢,这个left这块直接这样写不行,中间前面应该需要一个变量。
05:00
那就是前面你这些元素累加出来的一个值吧。哎,那我这呢,比如我就一个X来表示。X呢,我们提前呢,给它声明出来。啊,其实类似于这个Y呢,也是一样的啊,都先定义好。啊,这个XX呢,你看一开始是零,那刚才第一个元素,这实际上我写的它是不是不受影响。哎,不受影响,那现在呢,我比如说我给第一个元素。给这个元素已经赋了值了啊,赋完值以后的话呢,我们说当前这个X是不是要。是不是要变一下啊啊,你第一个元素完了以后呢,我这个X应该变成,嗯,我这这样写的话呢,不妨,因为我这整的会比较长哈,我在上面这个位置先都计算一下它的。啊,付给两个变量。Child。
06:07
这一下,然后这CTRLC,哎,我这呢,就直接写这个直大。还能短一点。行,那那这个时候呢,如果你是第二个元素的时候,那这个第一个你这个X,哎,其实我写等于呢是不合适的啊,因为你第二个元素是叫等于,那第三个元素是不是应该把一跟二都得算进去,所以这里应该用一个哎加等于啊加等于当前你这个差的是不是X哈,是横坐标方向的你自己的这个Y。够吗?不够是吧,哎,你像这个二的话呢,不就是你一的宽度,再加上你自己的left啊,你自己的right吗。就这样子啊,那外涌动嘛。Y啊Y目前是还在这一行。还在这一行的话呢,这个Y是不是不用动啊。
07:04
Y是不是当你换行的时候Y才动啊?哎,所以说哎,当你还在这一行的时候呢,只需要这四个值。这个有点。刚刚过了个楼顶,配置上又来了一个60是吧。嗯。哎,这个呢,就是这样呢,给这个X重新指定一下值,哎,Y呢不用动啊,那我们这个接加加呢,就开始计算第二个,第二个呢,这个life呢,得是这样的一下啊,那这个top呢。泡泡呢?如果你还是第一行,其实没事儿是吧?一行的话呢,这是不是都是零,但是你要一会儿这个A加加换行了,换行以后你第二行元素的top是不是就不能这么着了。是不是应该就得用一下Y吧。哎,Y的加下,那这两个用改吗。不用吧,你只需要在你左边这个基础之上,是不是就加上你自己的宽度,就是自然而然的是右边的。
08:00
啊,这个下也是一样啊,那这个Y怎么赋值呢?当你这一行。搞定了,然后呢,换行的时候。Y呢,应该动一下。Y是不是也应该是加等于啊?累加嘛,加等于多少。是不是就是你刚才是不是有个集合是它呀,这个集合呢,你是不是盖了一下你这个Di这一行的这个。高度值加进去啊。比如说你第一行I等于零的时候,第一行完事了,然后呢,你把这第一行的这个高度加进来,然后我这个Y呢,不是自然而然的,是不是就等于这个值了吧。对吧,那你第二行再进来算这个top的时候呢,就在你刚才第一行那个高度基础之上加一个marin,不就是你自己第二行的这个第一个元素的top。那Y运动X运动吗?哎,你S都换行了,是不是再换成个零啊。
09:00
从头开始嘛。对吧,哎,这就写好了。来跑一下。点击。就这样。哎,就是哎,你看这时候呢,我们这有marin嘛,所以这块显示的就是它了。哎,就这样个效果啊,哎,相当于我们这时候呢,如果这个数据呢,是一个静态数据,我们就直接写在这个布局里边的这些,那目前那个设置就搞定了。啊,真正在这个开发中使用流式布局的话,通常情况下这个宽度呢,一般都是一个慢的。啊,就相当于看到的时候呢,就是比较好看一点,但是这个高度的话呢,一般都是自适应的,因为它下边还要放别的东西。啊,那这种情况下我们看它会嗯,八成不会变哈,因为我们这个刚好换行这个字好像有点长是吧。
10:06
可以再再加在这个第二个后边加一个吧。下一个。Yeah yeah。这加了两份的,嗯。因为你看我这个宽度,因为我设置成match了啊,所以就跟你这没啥关系了,是这样的放法,哎,高度的话呢,就取决于我们这到底是放了几行。啊,这呢就是我们流失布局的一个实现啊,啊,那大家下来你也可以写一写啊,如果说写起来呢,还是感觉这个不是特别好,写这个呢,是不是又可以当成现成的直接就用就行了。
11:03
可以了。
我来说两句