00:00
行,哎,首先呢,我们复习一下上节课讲的这个内容啊呃,上节课呢,我们讲的话呢,就是我们这个思维导图里边这个PAD03这一部分,首先呢,我们还是做这个首页,首页关于这个home fragment的一个使用,这应该算是我们这几个页面,这里边我们一共是有四个页面了哈,首页投资和资产更多,那这里边呢,我们在首页这块呢,哎,有好几个知识点需要给大家介绍的啊呃,布局的话呢,就不是难度了,那这个我们没有加载成功,是因为我这的服务器没有打开啊,把这个服务器呢,我们给他看一下。啊,要要每次连接成功的话呢,这个服务器是一定得打开的啊,等回头的话呢,我找一下咱们这个,咱公司里边写后台这个,我让他把整个这个工程部署到这个后台上,等回头呢,大家就可以直接呢,你不用连自己的这个热点就可以访问了。行,这个呢,我已经启动起来了,起起来以后的话呢,我把这个再重新跑一下。
01:00
首页大概两秒钟的时候呢,就加载成功,这呢我们自己写了一个延迟哈,真正呢,你开发这个项目的时候,这个延迟是一定不要写了。然后呢,这里边呢,我们首先呢,就涉及到这个view配的一个使用,这个相当于是我们在之前讲的这个内容,View配呢,我们这里边加载的是具体的这些图片啊,相应的你该重写这个大,这里边这个方法啊,也给大家写好啊,添加呀,或者是这个删除啊,还这个回调方法都得写上,呃,然后的话呢,涉及到这个小圆点,呃,小圆点呢,我们说直接使用框架啊,Circle配置indicator来实现的,所以viewator加上这个。呃,Circle配置indicator啊,这是构成一个组合,然后后边的话呢,我们说这两个组合的话呢,呃也不用了,整个呢又封装在一个叫banner当中,这是我们这个帕零二里边讲的这个内容。啊,讲这个内容,这相当于是我们这个home fragment这里边的第一块比较重要的一个知识点,那以后大家用的话呢,你可以直接用banner就可以了啊,当然呢,用banner的时候呢,呃,如果问到了,或者说你自己去说的时候呢,你应该也知道这个banner呢,也只是封装了这个view配。
02:08
包括呢,我们这个小圆点这个制作的这样一个显示效果,包括呢,这里边还可以写个文本。啊,这个文本的话呢,你想你小心点,我们讲自定义控件的时候,你都会画了加一个文本。是不是对你来讲更不是难度啊?你想你都随着这个图片的切换,它都能够变化一下,这个其实也是同样的道理吧。哎,所以这个不是难度哈,哎,这呢,我们使用班呢,也只是封装了一下,所以我们使用框架的目的呢,就是为了使我们的开发呢更加方便,更加便捷一些,其实内部封装的呢,也没啥大不了的,无外乎就是这个代码就写好了,我直接用一下而已,是吧。就比如说我们写的这个my view也是一样,My view的话呢,我封装好了,或者说咱们自己,呃,给它去自定义的啊,那回头呢,你把它封装起来,你也可以去用啊,行,这是这个事儿,然后再往下走的话呢,就涉及到我们诶关于联网以后这些数据的一个更新问题了,哎,相应的我们这里边的这个内容啊,这个内容啊,就相当于它的进度,包括这个都是从后台服务器这块呢,同步过来的数据。
03:13
行,再往下走的话呢,这就涉及到这有一个圆形进度条。这个呢,是我们上节课里边呢,上来呢,就开始让大家去画这个。嗯,首先呢,这里面其实涉及到还是自定义控件的这样的一些内容啊,它呢属于自定义的一个view。嗯,涉及到这个圆环圆弧和文本的一个绘制,这个呢在相应的一些项目当中还是比较常见的。所以呢,需要大家去掌握。嗯,最好呢,这个还是自己能够画一下啊,当然真正在这个开发里边的话呢,你可以呢,直接拿现成的我们画好这个直接用就可以了,就相当于是找到我们的,呃,打开哈。知道吧,嗯,找到我们这个UIUI下边呢,我们有run progress啊,这样呢,相当于你直接拿过去用也行,嗯,然后呢,在你相应的这个布局文件当中,你看在哪个位置呢,你想定一个圆形进度条,直接呢就在这块去声明一下就行了啊,其实那不就跟这个差不多嘛,这呢所谓的是一个框架了啊,框架里边呢,它提供了好几个,其中有一个呢,叫circle page indicator。
04:21
那我们就把框架导进来,直接在我们的布局当中用一下它,那你你跟那个其实这不就一个套路吗?你说我这个也是框架里边的一个,那也算。就可以是吧,所以说相当于大家呢,呃,你以后呢,以后开发你比如说呃,关于具体的一些效果,你也可以封装成框架放到J上让别人去下。啊,就这样。啊,这是我们说的这个round progress啊嗯,然后的话呢,我们说整个这块呢,我们希望呢,有一个,呃,当你达到顶部,这叫临界状态啊,还可以继续往下滑,下边呢,达到临界状态还可以继续往上滑,这样的一个效果,哎,这呢相当于是自定义的一个叫view group了。哎,只不过这个real group呢,还是相当于是用了一个sc view,所以我们呢,就直接继承1SC view。
05:06
啊,因为呢,在这两个临界状态之间的这种情况啊,在这个位置以及呢,刚才说的这个位置之间的这种情况呢,还按照sc view的这种方式呢,进行一个滑动。啊,所以我们在重写他这些回调方法的时候。嗯,这里边儿呢,涉及到了一个修饰的情况。嗯,当你这个超出了这个临界状态,我们再按照自己的这个方式呢,去定义就可以了。啊,是这样的,所以这里边重心我们需要重启的就是onto event,哎,看看在什么时候呢,我们才需要按照自己的这个方式去给它重新定位子势图。嗯,这个问题呢,是需要大家去关注的啊呃,在这里边呢,也不是说呃,你这个lay的时候呢,因为我们这个木操作是不断的被执行,当你这个移动的时候啊,呃不断的被执行的时候呢,我就不断的去layout它,但是我一撒开,你应该回到呃那个临界状态,所以临界状态的话呢,我们需要去记录一下,但是这个记录的话呢,又不是说你每次这个lay的时候都记录,所以我们这呢,还有一个条件,当你刚一到临界状态的时候会有记录。
06:15
啊,然后过了这个临界状态再往下动,我就不再去记录了啊,所以这个里边呢,就是记录你临界的时候的那个位置。通过呢,你是不是空来进行判断,那这个空的话呢,一定得搭配着后续,当你动画结束的时候呢,还得再制成空的才可以啊。行,然后下边的话呢,就是。嗯,这个up的时候啊,你这个还有一个动画,让他这个区域来做一个动态的给它平移回去,回去的时候呢,需要注意的就是我们没有动画呢,呃,当你动画结束以后,比如说停留在最终位置,你这样设置,呃还不对啊,你这个事件呢,还在原来的那个布局的位置上。啊,要么呢,使用属性的话,要么呢,我们可以再显示呢,去调一下这样的方法,把整个这个布局呢,再调回来,那导致这个点击时间呢,相当于都是你这个最终的一个新的位置。
07:06
啊嗯,然后这里边的话呢,我们还涉及到一个问题,就是关于这个拦截的问题啊,拦截对应的另外一个呢,叫反拦截啊,涉及到子视图跟俯视图之间。嗯,这个呢,也是我们讲这个自定义控件,关于事件处理,呃,应该算是两个点的其中一个点哈,呃,第一个点呢,就涉及到我们事件的一个分发和处理机制,这个呢,明天的时候分享啊,嗯,这个先分发。啊,然后呢,考虑这个处理啊,Dispatch touch event啊,Onto event啊,到底分发和处理这块,其实或者说分发处理处理的话呢,你可以理解为就是这个方法调用,但是呢,这些方法呢,最终只有一个消费者。啊,从外层到里层会有好几层,到底谁消费怎么决定啊,这是啊,这算是两个方法啊,然后另外的话呢,就涉及到啊拦截跟法拦截。
08:04
啊,拦截跟反拦截。哎,处理这个自定义控件这块呢,比较麻烦的一个事儿,就是事件的一个冲突问题。嗯,在这个页面当中,我们知道呢,有外部的视图,里边也有视图,那到底涉及到具体这个视图这块了,因为我们这个你手按下去这个道或者是木啊,那就就这么一次啊,啊,或者就就这么一轮,然后呢,你到底是让他有层次关系的这几个子父谁来去消费啊,有的时候是让这个负氏度消费,有的时候呢是让子氏度消费,都是针对于木。啊,那这时候呢,你应该分出来说,这种情况下啊,木操作然负视度消费啊,这种情况下呢,让这个子视图去消费。那你怎么去区分这个事,那就是呃,去相应的重写这个拦截的方法,以及什么情况下呢,去反拦截,哎,让它区分出来这个目在什么情况下呢,该谁调。啊,这块呢,比较典型的一个问题,就是我们讲自定义控件的这个叫侧滑的这个效果了。
09:05
那下一代如果有一点忘的话呢,你回过去再看一看我们这个自定义空件,这里边讲到的这个内容啊,讲到这个内容,那我们这说到这了,那简单也回顾一下哈,在这个侧滑当中,我们整个呢,这是一个list view。这个list view的话呢,我们这个往这边左边这一滑动,具体的这个item这一项啊,它呢就能一个一个的都出来。啊,一个都出来,然后呢,同时我们这既然是个list view,我还可以上下这样滑动。对吧,那行,那在整个这个事件的这个过程当中,我们就涉及到了,诶这个目操作呢,有的时候呢,是需要让我们这个list view去消费上下滑动,那有的时候呢,又需要这个list view的内部的item。相当于作为view的一个子视图,它来去消一步。
10:00
啊,有这样的两种情况,那这个时候呢,我们就涉及到拦截和反拦截的问题,那在这个里边拦截是怎么体现的。拦截是怎么体现的?嗯,就是我们在设置了你这个子视图,它的一个水平滑动的时候,在这里边我们可以就是相当于这呢,我们可以定义成一个自定义的一个。视图是吧,来自定义一个视图,相当于自定义一个view group呗。啊,因为你一进来的时候呢,我这里边放了一个它这是算是你第一个哈,然后这边这仨呢,看不着在这边相当于我们在自定义的这个微博里边呢,重启大家比如on的方法的时候,一上来就让你这仨不就出现在这个右边嘛,就看不着了,就相当于啊,所以我们这呢,实际上是定自定义了一个这个VIVO group啊。然后我自定义完这个group呢,我是不是就会重写它的onto的方法呀。对吧,就像我们这边Mexico view一样,我也重启一,哎,我要考虑时间处理了,那我一写完以后的话呢,那你像我们这个时候呢,我就可以水平滑动了哈,那相当于我这个自定义的VI group口就可以去消费这个木时间,那这个时候呢,可能会导致一个问题,就是我这个list view啊。
11:18
可能有点问题了,就是你左右滑都能滑,但是我上下滑的时候呢,这个类六动不了。呃,因为呢,你有这个子视图,呃,这个自定义的view工作是不是消费了你整个这个木时间。呃,因为我们说世界这个消费的时候呢,是不是从里往外传啊,从里往外传,所以呢,我传到这里边,你消费了,消费了导致我外边就根本没有机会去上下动这个了。那这个时候呢,我们这个复视图是不是我就可以考虑做一个拦截了,哎,负对子的一个拦截。那那我就可以在这个list view里边,我去重启一下啊呃,这个。Intercept它是吧,哎,这个拦截的话呢,那你可以想象一下,它一定是在就针对我们这个list view来讲啊,那就相当于有三个方法,第一个it view是可以分发。
12:08
啊,List view呢,它也有一个untouch event。然后呢,这里边我又补了一个拦截的一个on,这个intercept touch event,那你想想这三个方法按正常来讲执行的顺序应该是什么样。首先分发。这是不是马上就得考虑拦截了,哎,因为你你要是放在这个untouch event的后边,因为你ontouch even本身就没戏嘛。哎,所以说这个呃,拦截的操作实际上是一分发完以后,马上就要考虑要不要拦截啊,那很显然我们分发的时候呢,是不是从外往里啊,所以呢,我是先发给这个list view,然后Li view呢,一发往里边去发,哎还没有往里边发呢,这块就说了我要难。哎,那这时候一览,这时候是不是就进不去了。哎,所以呢,我们就可以在Li view里边呢,去重启这个方法啊,但是这种情况我们不能说什么时候都懒,你要什么时候都蓝,那我是不是水平也滑不动了。
13:07
所以我们是有条件的拦,哎就像我们这个ma view里边啊,它的反应值是除根false决定了要不要拦,那我们可以设置说,哎,当用户如果垂直方向上滑动的比较多,哎大于你水平滑动的距离,以及呢,哎垂直方向又大于具体一个值的时候呢,我就我就拦,那我们那种情况下我就是退触。否则呢,我就海水形false,就是相当于这个方法默认值啊,你不重写的时候就false,所以呢,我就还让用户可以水平滑动这个具体的这一项。对吧,哎,这就实现了一个负对子的一个拦截。啊,这个时候呢,我们水平移动垂直也可以动了,OK,然后呢,接着我们这时候用户还有一个情况,当我们现在呢,水平往这边拽啊,我们说了就是用户只有两种状态可以选择,当你超出了,这我换一个颜色啊,这有一个距离值。
14:01
当你超出了这个距离值的一半。应该就让他们是不是全部显示出来。哎,应该是这样子的,哎,你要是没超过一半呢,用户1UP的时候呢,是不是就再回去啊,哎,这是我们这里边有这样的一个操作啊,哎,那行,那就是相当于他只能是二选一的一个状态,那就是你在up的时候呢,相当于是处理了这个逻辑了。啊,那现在我们出现一个问题,就是当用户往这边滑,我就滑动了,呃,就是不是起始的位置和这种这两个状态之间的某一个值哈,不管是一半呢,还是差一点啊等等都可以,哎,我往这边滑动了一点啊,然后的话呢,紧接着用户还在这个木的过程当中,我就诶马上就动了一点。你往上移动,如果往上动的距离还超过你水平那个距离了。你像我这时候在移动的过程当中,是你不断的相当于产生新的这个坟墓的事件,那你是不是又得是从最外层往里边由一顿分发,再出来又处理啊。
15:01
啊,这就是又重复这样整个一个过程啊,所以呢,当用户你往这边移动了一点,我又往上一动,那这时候呢,是不是就监测到说好像你想拦截。是这意思吧?啊,因为我们刚才不是写拦截操作了吗?你写这拦截那行了,那这个时候呢,由复试都开始消费了,你现在一撒开。完了这时候呢,它就停留在中间某一个位置上不动了。是不是就错了?哎,所以这个时候呢,我们就可以写一个反拦截,就是当我这个时候还在滑动的过程当中,相当于我这时候呢,在消费这个木世界。啊,然后呢,当用户再往上动的时候呢,我是不是就让他有一个反拦截啊,就是不让用户呢去消费上面的这个,呃,让这个复适度去消费了,现在我呢,做一个反拦截,就拦截负时度,对我的这个拦截操作啊,不叫反拦截。啊,就是现在不是那个什么反弹导弹导导弹呀什么的是吧,哎,他发一个导弹,你再去拦截它,这意思啊,复试图拦截你了,然后我这种情况下呢,我再反拦截你,这样导致的效果,呃,实现了一个效果就是来当用户往水平滑动的时候呢,它往上滑,这个我就不让它往上滑,就是相当于不让这个复式图去消费,它根本就没有往上滑的机会,这样我一撒开的时候呢,照样要么还原,要么就出来。
16:17
那整个这个时间冲突问题就解决了。啊,这呢,应该算我们讲这个自定义控件的时候呢,关于事件这块比较麻烦的一个事件啊,事情啊就是它。哎,下来的时候呢,大家把这个再去理解理解啊,我们这个里边呢,也同样的有这样一个问题,就是这呢是一个view啊,它是可以水平动的,那整个我们这个masco view又可以垂直动,哎我们呢,就可以去考虑这个时间啊,当用户这个我这边动了一点,或者说你这个稍微有一点移动,我在上面动,上下动怎么着?哎,我们可以呢,就判断一下,当用户这个垂直方向移动距离。大于水平的,而且垂直高一定值的时候呢,我就拦截一下,哎,还是体现为我们这个score will的一个滑动。
17:02
啊滚动啊,而不是水平的,所以我们就重启了这个方法。好,嗯,这个刚才有同学,呃,就是我们上课之前哈,问这个问题,问这个问题里边呢,也是大家需要去注意的点啊,什么问题呢,就是我们在这个on intercept,它是event当中。嗯,也要去,呃,获取你当前的这个坐标,就是get X get y啊,你down也好,木也好,Up也好啊,都是需要用的,所以我们写在这个逻辑的上面啊,然后这个值的话呢,呃,我们这个一开始的时候给它强转成一个in的形的了啊,然后这个值。啊,可能有同学会想说,我在下边儿这个untouch里边呢,我也没有用到last X,所以我在这块呢,我就不想给这个last X去赋值了。啊,这个是不对的啊,就是你在这个on intercept touch even这个方法里边,由于呢,这个方法要早于这个方法的调用。
18:03
所以说这里边呢,呃,你用到了这些,像这个拉Y啊,你后边用了,呃,包括我们这个问题当中到X到Y这三个变量。啊,先说这两个变量吧,这两变量因为你在这用了,所以得赋值,然后这个变量呢,在下边也用了啊,那你用之前我这块呢,就会对你这个值改变,所以它也得赋值,然后另外这个拉X呢,那也得给它去赋这值。哎,这个该赋值也得赋值,就是相当于系统呢,它还是会,嗯,相应的会去调它这个值的啊,虽然我们在下边逻辑中没有用到拉X,但是在这块呢,该赋值还要赋值,否则的话呢,就会影响你整个这个运行的一个效果了。啊,刚才那会看到就是相当于这我我一拽这块呢,就有个跳的一个一个一个效果啊,那是不对的,所以这块呢,这个值该写还得写上啊。嗯,另外一个呢,是这个这个谁是朱朱必成出现的哈,那这个还是一个出现的概率不多的一个小问题啊,呃,原因在于呢,就是他写这个方法的时候呢。
19:04
在这块有个小小的一个设置啊。动画。哎,这是我们这个动画啊,哎,就是当用户移动一定距离以后呢,我一下开呢,这里边儿有个平移动画,这个平移动画呢,这个呃,Duration我们是写成一个200了啊,写这个200的时候呢,这都没有什么问题,然后他写的不是200,他写成了就是这个这个差值了啊。哎,它这相当于是用了一个动态的一个duration。那他想实现的一个效果呢,就是如果用户滑的距离特别远。呃,然后呢,我这个duration就稍微长一点,呃,然后呢,距离近呢,它就短一些,就类似于好像就是随着你这个距离的变化,我这始终是不是一个匀速动画过去的呀,那咱们这个写上200,你距离远了,那是不是动的就快一些,你要距离近的呢,它就撒开就慢一些啊,因为我这个写死了啊,然后呢,这个位置呢,呃,我要是写成这个两个值相减。
20:00
啊,那按说呢,其实没啥问题啊,但是发现这里边儿有个细节,就是如果说呢,我们一上来就是我我正常这样划,相当于我超出临界值了啊,超出临界值你一撒开。那这个时候呢,这个相减的数一定不是零。对吧,哎,它不是零的,所以这里就有比位置啊,然后但是呢,呃,发现一个特点就是诶,我这都能滑,然后我撒开了,撒开以后呢,我现在我就随便点一个位置啊,随便点一个位置。啊,你想我随便点一个位置,是不是就意味着我这时候呢,其实你这个当就是你你这个方法肯定会进来,只不过这时候是不是只有当没有那个木直接就就up了。我点一下我就起来了,你这个二会执行吧。会的对吧,哎,会执行,但是会执行的时候呢,我这时候它是不是一个零啊。因为你根本就没有移动嘛,哎,这是一个零,然后呢,这个动画呢,其实发现它还正常的这个执行了。
21:00
哎,在动画一执行的时候呢,哎,就发现这个sat Du就是个零零的话呢,它也执行,所以呢,这个star的方法调用了,把它改成这个false了。但是这个没有执行,因为这个动画说一开始,但是呢,它是个零,他就发现,呃,我们就发现啊,这个方法它没有掉啊,这个没有掉呢,就比较麻烦了,那就相当于这个值呢,没有改成处。那它就是相当于你如果这呢,就写两个数相减,就会出现个问题,就当我随便点一个位置的时候呢,它改成false了,那如果用户点完以后呢,他再向上下去滑动,超出这个临界值的一个滑动就不行了,因为你这是false,所以导致呢,这个是不是就始终走这了。是吧?人一上来的话呢,这个早上脑子还没清醒呢,上来这个就计算量比较大是吧,那一走这的话呢,是不是导致呢,你这就按照这个我们没有重写的那个那个套路去走了,那你就不能够再去。
22:03
动了啊,不能在超出理念成长。就不行了。啊,如果你要非要想说有一个状态的一个变化,你可以怎么着,你可以稍微写一个数,然后呢,你再加上一个质量的一个差值是吧,保证这个数非零就行。行。这个刚才没反应过来呢,再理顺一下这个事儿,哎,这呢我们说的是这个my school view啊,这呢也相当于我们上节课讲的也算是一个难点了啊,嗯,然后再往下的话呢,我们就提到了关于这个base fragment的一个抽取的一个情况,哎,本身这个base fragment的个抽取不是特别困难,但是这种思想呢,是需要他来来理解的,真正你在工作当中去的这个写这些具体的fragment也好,Activity也好,乃至于说doctor也好。呃,今天我们也会讲到de这个抽取啊呃,那很多情况下的这个代码都是会有抽取的。啊,都是会有抽取的,那这里边儿呢,你要能够懂这个抽取的逻辑。
23:03
就是呢,你到公司里边有可能这个项目呢,是直接拿过来的啊,就是这个项目呢,第一版或者第二版已经出来了,然后也上线了,让你在这个基础上呢,我们再去迭代更新,那你先拿过来代码以后呢,你得去吸收看看这个代码的逻辑结构。啊,当然了,我们说这个代码不一定写的都是特别的。因为代码其实就是每个人的思想的一个体现了啊,那有的人写的就烂糟糟的啊,有的人写的就更好一些,比方你总会发现他写的比较好的一个代码,一旦写的比较烂的啊,啊按正常来讲的话呢,其实应该会有一些抽取在这里边啊,体现了你这个代码的一个互动性,这个结构层次的一个关系啊,就像我们你造一个类的时候呢,我们总会考虑说,诶,它会有一些负类。啊,你不可能在一个整个工程当中,所有的类都是平级的,没有任何负类,每个里边有重复的代码就都粘贴一份。那这是非常差的一个习惯啊,你会有代码的一个抽取啊,在这里边其实也是同样的套路啊,把一些这个重复性的代码,我们呢,就给它抽取出来。
24:08
啊,就是这样的一个概念,那你到时候要能看得懂这个逻辑啊,你不能拿来一个。呃,界面当中有一个home fragment。哎,出现一个他然后呢一找说这home frag呢知道,哎呀这是个fra行,那fra呢,他想展示一个什么界面,那我就去找on view,结果发现这里边代码根本就没有on view,说哎,这这怎么整的。是吧,那你这时候你得分清楚,那就应该在负类里,哎负类里边呢,发现找到了,哎负类找到了,那就意味着你每一个呢,你去找他对象,接着去commit的时候就调这个方法,这个方法里边呢,又向下又暴露几个抽象方法,那这几个抽象方法在你这里边去充钱。哎,然后呢,你看到的这几个抽样方法,呃,重写以后呢,其实就有点像是回调方法了。就像我们原来说到哈,哎,我这呢,一创建这个类的对象,然后呢,通过这个transaction事件啊,给他1COMMIT,发现这几个方法呢,就自动的在某些情况下掉了。
25:07
啊,像这个成功的时候呢,这个会叫联网成功。那就是就像是个回调方法一样。啊,其实啊,那你重心呢,就重写这个方法就可以了啊,这个抽取的逻辑要清楚,嗯,这个base frame的这个难度不大。难度比较大呢,就是我们关于联网操作,这里涉及到了关于楼配置的一个抽取。哎,我们涉及到有这样的四种状态啊,然后这四种状态其实就对应着四个不同的界面。啊,那我们就把这四种界面的提供和显示专门封装在一个类当中,称作loading配置类。嗯,这个类我们写上节课已经写了一种啊,它的难度在哪呢?难度主要在后边联网的时候。啊,联网成功了,联网没成功,到底显示谁啊,那个时候的界面的一个处理情况。
26:02
那一开始的时候呢,都可以啊,将它设置为正在加载的一个状态啊。啊,关键就是联网成功失败以后,呃,不同的这个页面呢,它显示的情况呢,是不太一样的啊,就是我们当时写的那个输方法的一个调用的时候啊,需要大家去关注的,那这里边呢,我们还需要明确一个点,就是诶我们的这个fragment。在这啊,哎,我们的这些fragment他们对象的创建。我们这里边儿呢,使用的是动态加载。Fragment啊,今天呢,我们就要分享fragment。哎,Fragment呢,我们用的是一个动态加载,那那fragment生命周期方法是在什么时候掉的。什么时候啊?身份证据方法什么时候开始教的?
27:01
啊,可能就有,那那说啥呢,那不是我现在问你这个生命的方法什么时候掉的,然后你说了一个生命状法,那那正常。哎,对,是不是问这个事是不是应该在这个commit的时候啊,哎,这个一定要注意啊。嗯,这个要注意,那面试的时候,那要我我就问你这个问题,你不能光会用是吧,那你用的时候呢,好多时候呢,其实就踩在这个边悬崖边上,每次都走过去了,但是问问你这边是不是悬崖,你都不知道。啊,那就这里边你每次呢都写的都对的,但就问你说commit之前是我们1NEW对象就调生命终极方法了吗?像activity一样啊,我一有activity直接就掉了,那这个呃,Fragment也这样吗?你说是,那就就相当于你踩到这个悬崖边上就下去了。没有啊,这不我们测试的时候,当时说了一个收方法。不能写这,呃,就是因为你写字的时候呢,一叫授里边那imagine view还个now,因为你也没叫啊quite view。
28:04
啊,就是这个时候呢,并没有去调生理周方法。啊,只有当你肯定的了才可以。那也就意味着当用户或者当我们你写代码的时候呢,你就不要忘写啊啊忘写commit了。那你界面中你什么也看不着对吧。虽然你你有这个对象了,但是你界面什么也没看着,那不就好解释了。你按说啊,我有对象了,我怎么界面中没有那个布局呢。嗯,你要是有布局,那就说明你这个on create view是不是掉了呀。没有说明没掉,为什么没掉?因为你也没想啊,没写这个,Come。是是这个逻辑吧。昨天这大家这是学累了还是咋着了?都没反应了,都。学伤了。我发现这个状态最差的时候就是周一啊。
29:00
假如说的周一应该状态最好的周日。你好歹。还可以缓一缓是吧。还是周日晚上太累了。一般都干啥呀?嗯,再一个呢,就是咱这个学习强度比较大啊,这个相应的这个每天吃啊什么的也得,比如早上喝点豆浆喝点奶,晚上睡觉时候也也可以喝点奶,稳定稳定情绪是吧。有好多同学那个现在达到一种状态,就是精神老是紧绷着啊,然后每天写很多代码,然后晚上睡觉的时候,梦里边也是代码翻来覆去。这样绕啊绕过来绕过去的,每天这样,那就有点神经衰弱了。可以喝点牛奶。啊,这个这个失眠应该没有吧。还有失眠啊,你现在应该是躺着,基本上五分钟就能睡着,应该是这样。
30:04
呃,你要夏天的话好一点,可能那个出去稍微跑一跑啊还行,现在冬天太冷了,也不太现实啊,嗯嗯,然后呢,你就是吃上得注意一下,现在外边那个就是卖那个那个盒饭是吧,我也从这买哈,但是你也不能老是中午晚上感觉也挺便宜,就老是吃着也没啥营养。因为你看它那个菜,我看九点多十点,它就一个一个的就端上来了啊,虽然它都是热的,但是你像那个青菜里边维生素好像也就保持十几分钟半个小时。有流失了,那你看他十点他就做完了,一直到12点下课你才吃,那其实你就吃饱了,里边什么营养也没有了。啊,就是每天你你可以吃一顿,但是其他的晚餐呀,或者是隔天啊,你到时候你搭配着啊,你得吃点有营养的东西。每天咱那个。脑力劳动还这么厉害啊?要对自己好一点是吧,现在没有谁照顾你,你自己对自己好一点啊。
31:03
行,那这个呢,就是我们刚才说的这个逻辑啊。来把这个我们先停一下。
我来说两句