00:00
学下我们个去去移动吧,要做成是这样的一个效果吧,大家看一下咱们这方面,我们做成这样的效果诶。哎,你看我滑,你看我我我我点中间这个位置啊,大家中间位置往右滑一半。是刚好它有一半了,好,那我从这里划。滑到整个屏幕是它刚好也是整刚好到对应的下个位置啊,一放它就停留了,然后再滑回来,一放还回来,是不是啊要做这样的事情呢?那这个红点移动该怎么做呢?它的原理是什么呢?好给大家讲一下离红点移动的原理好,红点移动的原理好,那么同学们既然在我们这个地方里面可以之前那灰色的点。
01:04
他们是怎么有间距的,还有印象吗?啊,是用到了谁呀,是用到了我们的这个啊,Left market,那也就是说我把这个值设置动态的改为连1234567,慢慢的增大,是它的距离左边慢慢的变大了,同样在滑动的过程中,我是可以把这个红点距离左边距离慢慢的增大,是同样都可以移动这红点了,好,其实移动红点的距离特简的,它的原理就是利用我们距离左边的距离。是吧,距离左边距离,然后呢,实现什么红点到什么移动,好就这个,那么我们是改为一个这个等于一个动态的什么值就可以了。好,关键是这个红点该怎么计算,是不是这个道理啊,好,那么怎么去计算呢?大家观察一下,有这么一个现象,就是我滑动一半,是不是他也滑动一半呢?
02:05
是不是,那么也就是说我在滑动屏幕的一半,是不是两个红点也也一半呢,那么他们就有这个关系,就是这个啊两点间。注意啊,在我们在这个地方里面,我们在这个地方里面。啊,这这这个这个滑动不是标准啊,那就是说你在这个区域里面去滑动,滑动,你滑动一半是刚好在屏幕也滑动了一半呢,是它们的比例关系是1:1啊是不是就是你在这里面滑了多少,在外面滑动多少啊是有这个关系啊好那么有这个关系,后来我们得这样的一个公式,就是好这两点。间移动的距离比上间距,注意间距是什么呢?就是这两点间的间距比上这这个这个这个间是这个是什么是间距啊好,那么这个红点在里面内部移动的距离是就这个,好那么它比上它等于我们屏幕滑动的这个距离,然后比上屏幕的什么?说这个问题吧,大家想想我们。
03:36
屏幕滑动的距离,然后比上屏幕宽,它其实这个东西本身它是就是屏幕滑动的百分比呀,你看你整个屏幕是固定的吧,但是你得的滑,假如我滑动一半是就滑动屏幕的50%啊,所以这个值我跟你说同学们这个部分是什么已知就是说屏幕啊,然后滑动的距离比上这个屏幕的宽,这个呢,它其实是指一个什么屏幕百分比吧,啊,屏幕滑动百分比是已知的,哎,老师怎么就已知了。
04:21
我们没配角是可以监听页面滑动的变化呀,它有一个百分比一环,我们就说这个是已知的啊,这个是已知的已知,那也就是说这个平幕滑动百分比是就等于这个值啊,那也就是说这两个值知道了,那因为这两个值出差数就等于这个,那也就说我这个间距式也可以求啊,那么我们最终要求的是这样,这个好间距我们是可以一会可求的,好那么这个时候呢,它就等于大家想想它除上它是等于我们屏幕的百分比乘上多少,乘上间距吧,好间距好,那也就是说这个是已知,那这个可以求出来是不就求这个很简单啦。
05:15
好,然后那么也就是说两点滑动距离,注意他还要做一个事情,这个距离过后。一放。是回到这里啊,所以它加上原来的起始值吧,最终要总和为两点。点间滑动动距离,然后对应的坐标,它就等于原来的起始位置,加上两点间移动距离,最后它才会停留,注意还加这个,也就是说以后我们把这个值传到哪里去啊,从到哪里去啊,啊是从到盘岭这里是就可以了。
06:09
懂意思吧?是不是明白了吧?好,那还有一个就是这个是已知,这个是要求啊,嗯,好,那么两,那么我们的这个它是等于什么呢?大家想想那么两点这个就是间距,这个间距也是就两点间的距离啊,那么这个哥们它是假如说要求这个间距是等于。这一条是距离左边距离啊好,然后这距离是等于这一条,减掉这一条都等于什么,这间距啊好,所以的话,我们得出这样的一个算法,就是啊,第一个点距离左边的距离,左边的距离第一个点距离。
07:11
第一个点距离左边的距离减掉第几个零点距离左边的什么距离就带出来了吧,明白了吧,OK,好,那么就是这么去算出来的。那么屏幕百分比发动百分比呢,啊,这个呢,是通过与配角可以监听到啊,因为与配角是填充整个窗体啊,所以的话呢,它可以见到,好,那同学们这就是我们的一个原理,接下来我们要得到点的间距。它点的间距好,那得到点的间距是不是我们先要去求我们刚才所讲的这个值啊。因为这个地方里面,在这个公式里面,大家看好这个公式里面,这个是已知,这个是来求出来,那么接下来求它,那求它的话,那接下来我们怎么求呢?好,那接下来我们来地方看一下,好,那同学们在这个地方里面,我要说到一个这样的一个概念。
08:15
叫视图数,好,那么说到这个视图数啊,还要讲到另外一个概念,给他说一下,要不然大家会晕掉这样的,大家想第一第一个点距离左边距离和第零个点距距距离这些是不是我们试图的一些内部的值啊。那我们在试图在渲染的过程中,我们如果刚创建这些值是是默认是默认是没有值啊。那只有在这个啊,只要测量后才有啊,那么测量后有那么OK,那么如果在绘制的过程中,你觉得这些词应该存在了吗?存在了,那在布局的过中,这些词存在了吗?Lay out这个阶段。
09:03
是也有啊,我们在我们资金控件不是讲过吗?一个控件生命周期是先测量再布局,然后再绘制吧,那么测量好了就值了吧,那么那么也就是说只要在后面布局以及绘制这个阶段是肯定有有这些视图距离,左边距离这些值了,所以这个时候我要监听一下the out的执行,大家看好,就是根据生命周期生命啊,根据根据我们的view的生命周期,然后我们当试图执行到这个绘制好是置一到布局阶段,就是layout方法吧,Lay方法这个on without或者封住,封住的时候是吧。
10:03
那这个时候视图肯定是有值啦,视图的高和宽是吧?啊边距是都有啦,边距编嗯编剧对吧,距啊啊都有了,好那这个时候我说监听这个lo执行是就可以了,好那这个时候我就拿到红点,对的红点注意你其实啊拿到其他去监听也可以,因为这个它是一个适度数,知道吧,在某一个执行都可以临近到好这时候给他得到一个啊啊U的一个速度处的一个观察值。这个单词是什么意思啊,是读数法,这是一个什么子,然后它里面有一个方法叫添加ADD,你看它这个地方里面,你看不光有添加全局的lot监听是全局的一个啊,是移还可以移除啊,还可以添加on JO on的执行,是一个焦点的监听等等这些方法呀,好,那这些方法同学们,我们我们来用一个叫lot这个监听,那么其他方法是什么意思呀,给大家略介绍一下,在这里面呢,有一个文章。
11:26
好给看来啊,在这里大家可以看一下。啊,然后呢,点击这啊大家再看一下,你看啊,比如说我们刚才所用的这个方法,这是什么?当一个数字中全球发生啊发生啊全这个视图数中全局布局发生改变啊,或者是视图中的某个视图啊,可视状态发生变化的时候会执行,那这个时候我们在一渲染的过程中,它会啊发生一个变化,那这时候呢,因为我们在移植,在移动嘛,在移动过程中发生变化,那这时候我们可以计算它的一个间距,好,那这是一个方法是是这个意思,然后这个你看还有全集的一个什么速度数的焦点状态发生变化的时候,所要调用的回调函数的接口类是还有一些当视图数将绘制时所调用的回调函数的接口类,那么我们用的是这个就是视图数中,就是什么叫视图数啊。
12:27
是吧,大家看一下什么叫四组数呢?在我们这个地方里面,你看是一个套一个,比如说我们在地方里面画一个图,它跟节点是一个什么布局啊,是一个啊,一个相对布局啊好,那这个时候我们可以把它调一点。所以相对不佳好,然后它下面是还有个这个布局,还有个按钮,还有一个相对不佳好,那它有三个,一个两个三个好,那么呢,一个两个三个好好呃,这个是一个啊你菲姐吧,好。
13:23
一解这什么问题吧,好,还有个是什么八成吧,好还有一个是相对布局吧,是相对布局又相互讲啊,这个相对不里面有几个孩子啊好,我们呢,他有两个孩子对吧?好把他给放心点,他这里面有两个孩子。好,这两个,这像一棵树吗?
14:00
倒过来就像啊不倒像不还不像好,那么在这个地方里面啊,它里面有一个什么in the out,还有一个什么你没吧,你image view是不是好,那么大家看一下我们的地方里面全选,然后右键我们这个地方里面的话呢,旋选,我看它有一个旋转,看到没有旋转在这里我们旋转多少度啊。好好,这里来下一个数吗。你看这个数跟树差,这个又发了一个数字吧,这么吧,啊,就是这个意思明白了吧,啊就是一个数叫数图数,你看是不是啊,就大概这么一个意思,然后有了过后,我们只要监听任何一个节点都可以,就比如说我现在监听的是什么这个节点吧,是不是因为这个四毒素是怎么是怎么一个绘制过程呢,比如说它。
15:05
要绘制的话,假如他绘制的话,那那那么他就是先测量它。这个测量方法它被调用了,所叫它调它的呀,然后它自空又调它的,又调他的调它它过后又调它的呀,同样on out out也一样,Out的时候它的执行是不是也会调它的out,那是我们监听内部监点就可以了,好,所以拿到它监听,然后接下来这个把它给选上好,好那么这个时候这是一个什么是什么呀,是个接口啊好,然后呢,把方法给实现一下,好把这个给溜出来,好,那同学们,既然它是一个速读数,这个方法它可能就执行的是不止一次吧,执行执行啊啊不止一次,但是我们得的间距是只要执行一次就可以了。
16:05
对吧,所以我们还要做一个事情,就是是移除这个监听呢,你执行一次就就就就什么就可以了吧,对吧,好点一个叫吕木鱼。好,然后嘞,在这条里面,我们如果用这个过时的啊,它嘞就可以这样,就就就直接这个,但是如果没有过时的就会啊,就选它,他这时候来都也可以,但是他要对一些版本的不支持啊好,我们先这样写。有了过后,接下来我们要做的事情是什么呀?是得到间距呀,对吧?好,你看这里面报一个说看到没有,刚才啊,刚才刚才有个红,一会我们再去做它,好,那接下来我们看好印的类型啊,然后嘞,Left啊啊market啊left。
17:03
Marin是吧,好,然后有了过后呢,或者说我们距离左边的最大距离吧,Marks,好,然后这个地方里面根据这个的话是第一个点距离左边距离的就是LL这个去get第几个,Get丘顶吧,好,第几个第一个是吧,然后get我们的啊left,你看这是句子进句对吧,减掉啊L,然后去get我们的丘顶,Get我们的丘顶第一个零个,然后这里面有一个啊啊get left是吧,这样的一个距离吧,好,那这个间距是有了吧,好,我们把它写成内的层变量。好,那这个参数就是啊,两点啊,两点的间距吧,两点两红点,这个两点吧,两点的间距是不是是这就是这两点的一个间距啊同学们,这两点的一个间距啊,这个间距啊,好就被我们求出来了,好,那么这个就是我们就求出来了,好,那么还要做一个事情就是。
18:29
要得到这个屏幕滑动的百分比,这个值啦,这个怎么得到呢?好对天天微微写页面好,大家好,那这个时候来到这地方,哎,你看到看到红线了吧,为什么要红线呢?是当前版本是14到最低版分之是14啊,那你这样想,你如果想,如果你想坚持低版本是要用这个过时的,对吧,如果你是能保证你的版本以后就是16,是用刚才那个新的方法,那我们先握过十的也可以啊好,那同学们在我们这个地方里面的话嘞,我们就得到间距了,接下来再要去啊,得到我们屏幕滑动得百分什么B好,那么与配减,它就有一个方法叫ADD是监听我们什么。
19:27
添加监听页面的改变了,好,然后这里面又是一个什么,又是个接口,这个用过吗?用过对吧?好这里面呢,好,然后去选一下,好然后呢,在我们这个地方里面呢,把它这个选一下。好。那么再往地方里面把它给溜出来,这个是什么意思啊,是于配接监听页面的改变,我们在我们在滑动的过程中,是不是一些状态发生变化呀,好,哪些状态变变化呢?比如说比如说在我们这个地方里面,页面滚动了会毁掉这个框锚,当页面滚动了会回调这个方法,这个方法里面第一个是我们当前这个滑动页面的什么位置,这个是我们滑动的,就是就是我们屏幕滑动百分比啊,其实这个就是页面滑动和百分比,所以那老师你明明就说页面滑动百分比啊。
20:41
但是这个页面是在填充整个页屏幕啊,所以要把它,它其实就是页面就是整个屏幕滑动百米知道吧,那因为它页面和屏幕它实际上是等价的,因为它是填充的吧,OK好,那这个呢,是滑动的什么的像素啊,这个方法是最重要的,还有这个方法给说一下啊,那这就是我们啊,当页面被被选中的时候,回调什么这个方法,那这个方法是什么。
21:24
是我们被选中页面的什么对应的位置啊,页面啊对应的位置对吧?好,那这个就是当我们页面啊状态啊发生变化的时候,你看什么状态发生变化,我在滑动一放它就停止了,这个状态有变化呀,好,那这个时候呢,我们就会当状态,当我们与可解页面滑动状态发生变化的时候,你看它有几种状态啊同学们。
22:06
它有三种,一个是拖拽,一个是惯,一个是什么静止,一个是共性是吧,一个是在滑,就是滑动过程中就是有惯性状态有三个,一个是正在拖一个状态,静止一个状态,然后在在什么在一放的过程中,这个共性滚动这个过程中一个状态啊就比如说这个是我拽走是一个状态吧,你放刚才动这一块是一个状态吧,停止它这个状态吧,啊它有三个状态,这三个状态切换的时候会回掉,这方法好,那么这个时候百分比这个是不是就得到了,好那同学们在我们这个地方里面间距切换就是啊,间距得到了,百分比得到了,好那么接一会的话呢,我们就是移动,那我们先把这个保存下,这是点啊切换间距的计算啊,包括百分比的计算,把视频的。
我来说两句