00:00
看啊。我把这个收起来,下面我看下一个测量好了,视图的宽高有了,下面我们要决定它在哪显示。也就是他的布局。好,这个作用呢,就是确定视图显示的一个坐标。一个你说一个矩形要在窗口里面显示出来。怎么个坐标法呀?确定什么呀,左顶点的坐标和什么右下角的坐标,那不就是left的和拓这一个是不是左顶点坐标啊,Right和波呢。右下角的坐标。没问题吧,嗯,最终就干这样的事好了,他经历了一些方法了。有两个方法,诶这个方法我们用过。利奥的方法,咱今天不就用了它了吗?啊,还有一个方法叫尿的方法。
01:02
这个方法是不是用来调用的呀?呃,这个方法用来干嘛。是不是重写的?好,我们来看一下。我们一般是不会重启这个方法的。因为它不不是一个回调方法啊,只会什么呢?调用视图对象的,此方法用来干嘛呢。它里面是不是要基于指定是个参数来的,还记得不。什么left,什么top,什么right,还是什么bottom。我一定让他是对世俗做一个什么事情。是布局定位呀。啊,看有指定其新的显示位置,我们今天拖动三硅谷的一个图标,不就是用的这一个方法吗?好。下面这一个方法。
02:00
On me的方法重写它,我们一般是重写它啊,重写它这个地方也是用于去控制啊,它只是这个方法是不是用来控制当前视图对象的一个布局啊。而这一个呢,是用来控制指标的布局的。那我们在这个重写它,它是谁掉的呢?我们可以看一下啊,这个地方来。看一下这里面一个是六,找一下一个方法叫利奥的方法。是不是有啊。好内二的方法里面啊,这个里面呢,有有一些有一些计算,有一些说法,看到这里。这一步。干嘛去?是不是去调用安利的呀。那看它总。什么个意思?就是这个view里面这个on是不是做了一个空实线呢?那为什么要做一个空实线呢?给大家说一下。
03:05
他这一个是用来控制孩子的位置的,那关键你想想看,我这个我一般的有孩子吗。是没有啊,所以说这个地方它不需要做什么。那谁会去写呢?看到这里,这里非常有意思的一个事情,我们的group他特别特别怪。负类是一个实现的方法,那个子类它又把它变成什么抽烟,哎,它为什么要把它变成抽象的呢?对吧,是不是强制他的孩子必须去重写这个方法。打开啊,来看一看,我给大家找一个东西,找一个比较有意思的,我们用的我们用的最多的是哪一个布局啊。线性布局是用的最多呀。诶,我好像带大家看过这个方法,我不知道有没有印印象啊,还是我记错了的问题来看着。
04:07
来啊。这里面有这样一个条件,判断判断什么东西啊,大家判断。什么意思?方向,方向是什么?如果是垂直的,是不是要用这一个方法,如果是水平的,要用下面这个方法,怎么个意思呀?你想想看,那个垂直的线性布局去控制孩子的时候,和水平的线性布局控制孩子,他是一样的吗?那差距可大了,对吧,譬如说举个例子,我假设一个垂直的线性布局啊,这一个是他的是吧?啊,他假设他的孩子宽度高度呢,啊,它这个地方呢,宽度为W1,高度呢为H1。那你说它的位置怎么定位的。左上角为什么?妮妮,没问题吧,右下角啦。
05:03
W1什么H1没问题吧,好了,接着我又来一个,我其实两个是靠住的啊,假设两个靠住了,它的宽度呢为WRHR。我现在问一下大家,你说这一个坐标是多少?H0,首先X轴的坐标是零对吧,它的横纵坐标呢,是不是H1啊,很明显嘛,对不对,好了这个。它的宽M的坐标W是吧?H1加什么H2。是这样去控制它的位置的吧,这时候的垂直的线性布局,你来看啊,假设我们呢,是一个水平的线性布局。啊,假设我们是个水平线距啊,我的宽高呢,还是跟刚才一样啊,还是跟刚才一样好。
06:00
那开始的第一个布局是不是还是一样的,这个位置是零零。对吧,而这个坐标呢。We,这个没问题,关键是第二个。价格还这么棒吧?是吧,好,这么棒,你说它的坐标是多少?是不是W1怎么样,你你看他开始的时候是多少。零一,而我现在是W0,这是完全不一样吧?嗯,这个是不是。W1加什么W啊,这是它的横坐标纵坐标的是不是H2啊啊,这个是H1吧,对吧?嗯,好,大家看这一样吗。是不是也肯定不一样啊,这哪能一样呢,对不对?那也就是说什么意思呢,即使是同一个啊布局。他这个属性不一样的话,是不是控制孩子的布局的方式也不太一样啊,那你说相对布局。
07:07
是不是又一种控制的方式啊,相对布局要不要去重写这个安利的方法呀,肯定要他要不重写,那怎么去控制孩子呢?只是它是根据什么来去控制呢?我们那里面是不是有很多相对布局的一些属性啊。啊,相对布局的属性去跟他进行控制啊。这是这样一个是。大家需要去知道。按列的方法是用来干嘛的?再说问一遍。干嘛呢,是不是控制当前调用这个方法的这个当前视图对象的布局啊,而这一个呢。是控制指标的不觉。嗯,就这么简单啊。
08:03
还有一个事情需要跟大家去简单的说一下,大家看在这里。啊,我刚才说我们说按内的方法谁调用呢,这个lay奥的方法呀,那问了这个料的方法一定会去调用安利的吗。一定吗?不一定,这明显有义务条件嘛。好,这个义务条件在说什么事情呢?首先它有两种可能性,看到了吗?一种千级的什么意思?就是位置发生什么改变了。啊,就当我的或者说我的指示图的尺寸发生改变了,那是不是重新计算,重新布布局啊,这是一个发生了改变,还有一个啊,这个地方涉及到一个啊,一个方法。啊,一个什么方法呢,我跟大家先说一下。
09:02
有一个方法叫request layout,什么意思?请求布局,或者说叫强制布局,或者叫强制重新布局。一旦调用了这个方法,就会导致于我的安利奥的方法重新执行,原因就在于我这个地方。我在内里面有一个他的判断。啊,可能你没办法一下子看清楚,他不是说像我们平常说的一个什么简单一个等号,它在里面还做了一些语音上啊把它相等。只要你调用了强制重新布局,那它这里面就会是一个处。那就会重新的进行布局了。啊,后面呢,我们可以进行测试啊。就是这样一个事情,好。看看啊。这里面就有两个方法跟大家说了一下啊。
10:01
就是说如果说视图的位置或者强制重新布局了,就会调用此方法。记住了,这一个方法是由上面这个方法调用的,其实你会发现这是不是这种这种感觉是不一样的。是吧,你看我的,我们是不是一般去重写按开头的回调方法呀。对吧,而按开的方法是谁教的呀。是不是它所对应的那个方法调的。嗯。啊好,来,我们去把这两个方法可以适当的写写看看。啊,我把那个呢,给它拿出来一下。看到没有?现在我们说过了,一般我们去重写哪个方法,On me的方法。对吧。来试试。
11:02
好,写一下。好,我把这个嵌体的呢,给它打印输出一下,好,平常的时候我们其实一般不会去重写哪个方法呢?Layout的方法,但是这个里面我故意的重写一下,记住了,我故意重写是想让大家看到一个调用的流程,并不是说我们真正开发中要去重写这个方法,我让他看到一下流程,也就说我做这些个事只是能增加一个打印输出啊,并没有改变它默认逻辑吧。这样。啊哦,你没打印是吧,写到里面去了。好了吗?来,我们来看一看,看看是一个什么样的状况啊。
12:03
啊,这个有点多,我们先把这个呢给它给它去掉,去掉以后呢,再运行一下,因为前面有很多打印在这里面,看着好来看一下。先是对象被创建吧,接着是因为我是加载布局嘛,加载布局成功啊,我activityth执行了,接着是关联到窗口好下面。接他干嘛去?测量这个呢。布局。接着。阿内尔为什么是安利的呀?为什么它会这样安利呢?因为我现在的尺寸是不是改变了呀,开始为零,后来改变了,好了大家看。啊,现在呢,他。是不是右侧量离子。啊,又测量一次,测量以后是不是要再重新布局啊。你既然重新测量了吗?再重新布局,这个时候他为什么。Force就是没有改变的啊,就测量出来一个结果好了。
13:03
啊,就是这样一个事情啊,他一定要调动到最后没有改变才行。对吧,要确定了我的宽高。进行的布局。他才会停下来,不然的话,它会一直的进行布局,并测量进行布局。嗯,好,这是这样一个情况啊,大家主要是后面呢,需要去看一下这里面的每一个说明。好,下面有一个叫强制重新布局。怎么强制了?试图点request layout。大家看我来去给大家去做一下这个怎么个做法啊。Not。这样吧,在外围呢,我得我得去添加一些。添加一个布局啊。
14:02
我得添加八才行。好,在这里面我来去整一个button,大家看啊,来试一下整一个button。来触发一下。我把这一个呢,设置为宽度充满,嗯。好。来啊,我在里面呢,去写一个叫强制重新布局,你让它的布局的相关的方法重新再调用一遍,好来给一个on click,强制怎么说force。是不是头吧啊for lay的,好了,有这样一个方法,我们来去写一下,这个比较简单啊,Public VO啪,View v,好,我这个地方要强制重新布局的话,我得刚才说是不是要调用试图对象的那个方法呀,视图对象呢?
15:08
啊。把这个给大家写一下,视图对象我好像还没找吧。在哪个里面。是不是这个里面啊,把它去掉啊,那得怎么做。八嘎啊。我这一次我不写ID,我就不想写。你说我该怎么做?我就不想写对吧,我们学了这么久了,对利用一下大家看啊,这个view准确来说它是个什么布局,是个量的吧,那我可以写成什么。吧啊,大家看啊量。内吧,好这个layout呢,做一个长短,接着最终是不是设置了它呀。好,我想去定义一个我自己的视图,叫my text view。
16:06
可以吧,My text view,我们看一下怎么样得到my text view。Lay out,点它是不是要得它的指标啊。我们说过了,父亲是有得到方法了吧?Get。View。这个里面有吗盖的。跟着跟着钱都有。有吗?用这个方法。用find。用final,哎,我天呐,说了半天了,这个里面我就没有ID对不对,我就没有ID,那你肯定找不到啊,对吧,那这个时候我们就用get check at几了。零这是它的第一个孩子嘛,对吧,第一个孩子的下边是不是零呢,做一个。
17:04
相对吧,可以了吧,好了大家看啊,根据下标得到指标可以吧,好看这里面这个做法特别简单。就咔嚓一下什么。Layout。就这么简单的一句话,主要是我们要看一下它会不会有那些回调方法,是不是会正常掉,对吧。强制重新布局,来一个零。好,我们来看一下。来点他吧。点。
18:00
打看。有没有?是不是重新整的呀,啊,但是他现在我们有改变吗。没有摆,它是不停下来了呀。那当然了,你这里面又没又没有尺寸的变化,又没有布局的变化,对不对,只是我强制重新布了一下局。还有一个事情,大家可能前面我把它自动删掉了,现在我当前这个视图的宽高是不是有变化呀。宽度倒还是以前的高度,是边上的,是这适应吗?你现在再来看它得到的测量的宽高。背多大?是19啊。宽度还是一样的吧,320。嗯,这很正常,现在宽高就是没有以前高了嘛,以前不是开始写的时候不是充满整个屏幕吗。对不对。好。在这里面啊,我们就暂时了解了一下它的一个布局的作用。
19:02
啊,还有它的流程的方法,一个是layout的方法,一个是on的方法。还有一个就是如何强制重新布局,这个呢,暂时呢我们用的少了,但这包括这个我们前面也有用。啊,就用的多的,我就给大家挑一个红颜色,大家重点的去关注一下。估计大家很多人觉得这东西我还感感觉不到它的用处,对吧,就感觉你在测来测去的,最终都不知道怎么用。你先呢,就好像于我们前面是不是测过XT生命周期啊。你到现在为止,你用过他的一些别的方法吗?基本上用什么on,但是一旦你深入的去用,你做项目的时候,如果碰到一个比较深入的一个功能。啊,可能就会用到一些别的生命周期的方法。啊,现在我们就是要先研究一下它的生命周期流程,对他的方法有一个了解,等到你用的时候,我们再回过来看啊,你就会明白这个东西。
20:05
它的一个作用和意义。
我来说两句