00:00
今天进入我们首建营的第二天啊,当然我们虽然选的按的是这个天数啊,但是呢,我们可能这个一天啊,并没有讲完这么多啊,也就是因为我们相当于改成是讲大半天。这个剩下的时间用来练习这种模式的啊好,那同学们,我们今天呢,回顾一下我们上次所讲的内容,那么第一天我们所讲的内容有哪些呢?好,我们把它密集起来,在我们的项目上。好,在地方里面,我们一起来。首先我们这里面有一个启动页面,这个启动页面呢,我们把它叫做activity是吧,那这个页面的话主要就是啊,就是加深我们的用户,对对我们这个产品一个认知度,就是logo是吧,Logo的话呢,而且我们做了一个事情就停止。这个两秒钟,当然我们可以去点击瞬接进去,对吧,那这都是表示次要的,最主要的是我们这个主页面,这主页面也就是我们的这个架构,我们这个架构是怎么一个模式呢?好给大家来看看,在我们地方里面了。
01:09
好,我们去把它给打开。打开过后呢,在我们地方里面的话呢,就是这么一个结构,好,这是一个me。啊,这这么一个题,然后左边。在这个地方里面的话呢,这是一个上面这部分是一个什么呀?啊,上面部分是我们的一个。真布局呀,这整个部分。啊,是一个真布局是不是啊,真布局然后有了后,在我们这个地方里面的话呢,在我们地方里面,我们在下面就radio古普对吧,Radio古里面就有几个孩子吧,好,那这一个孩子的话,大家平时的radio古洛普的话是有一个圈圈的,我们怎么把这个圈圈干掉的啊,80时都会透明呢,八层是透明对不对。
02:12
好,然后有了过后,我们在地方里面呢,每点一个本地,本地音乐,网络视频,网络音乐,这个时候它就切换到不同的页面,那么我们要想切到不同的页面,他们之间是有一定的规律啊,比如说我点它的时候是切换到第零个,第一个,第二个,第三个,那么我们要他们有共性,要继承一个什么,继承一个积累,对吧。一个积累。啊,那大家想想,如果我不继承鸡肋,它会带来哪些问题?如果不集成一个类,那么我们怎么把它放到集合中呢?其实也可以放它的变是什么,但是里面有方法吗?没有,那你们怎么调用,怎么入把每个类啊。
03:13
是没法做到啊,是不是,所以我们要自己写一个负类,然后既能它,然后里面写0U和零我们的政策,这时候当一列对的时候,我们去请求网络。或者说储存我们的数据,然后的话呢,就可以显示,比如说这个这个地方里面是在你data的时候调用的吧。然后就设置适配器是不是这样的,是不是好,所以的话呢,我们要做这样的一个事情,而且我们把这页面能够把它显示在这里面,这里面的话呢。好,这里面少了一根这个线。
04:00
这里,那也就是说我们在这个地方里面每切换一个页面,都是通过把它把这里面的内容给填充吗。啊,虽然我们我们用的是是替换,但是其实本质上是在这里面填充知道吗。只是说这个替换,替换这个呢,它有一个特点,就是如果它存在是先把它移除再添加呀。好,那也就是我们从代码上里面的话就是这样子,比如说我们一启动页面的时候,这时候我们会延迟我们的两秒钟进入主页面,对不对,然后当我们一点击的时候,好注意了,你点击时候这里面不是有个触摸事件嘛,对吧,这个触摸事件它会执行100,会当执行一次,沐语执一次吧,阿普没有机会执行了,是这样的。然后在这个过程中,我们相当于启动了这个主页面多少次啊。两次后来我们做了一个什么过滤,如果你执行把S进来的时候,还有机会启动吗?没有了是吧,这样的话,我们的这功能清单文件里面启动模式这个单利我们是不是都不需要了。
05:17
当然有一种办法,就是我这个单利也可以啊,但是单立也带了一个问题,假如我一点进去,我立刻点返回就退finish息了,这时两秒钟是不是他又进去啊?随时也有bug。所以我们应该从源头上。去抓起对不对,是不是这个道理啊,OK,好,那进入主页面过后,这个时候呢,我们继承了lement,为什么要继承他呢。因为它里面有一个,它里面才可以得到我们的fragment,知道吧,好,因为这个地方里面你看是谁的方法。是是不是啊,所以我们要继承它,明白吧,啊,所以大家就是说走进它,我们才可以得到,因为这个它是维持保里面。
06:09
啊好,那同学们我们来进来过后,然后布局就是这么一个形式,就是说上面这部分大家看到的这个情况,就是啊,我把这个笔记。这个它启动起来,然后给大家看一下,在这部分。这部分是我们的内里不洛普这部分吧,然后中间这部分是我们的什么呀。是把这哥们以flag们呢,就是动态替换这部分呢,这部分呢。这部分就是我们的什么态头棒呀,好,这个态度棒,我们是不是自己中定列有个控件,然后点击就默认处理它点击事件了,还有印象吧,你看这里面为什么这么做呢?其实我直接在I里也可以发一个ID,然后设置点击事件吧,他这样的话呢,就有个问题,就是我在it里,It里面是不是代码比较多啊生我单独写一个类上的里面内部这样的话,你去点击它自己响应自己是不是更好啊啊,而且以后你去用这个类在任何地方都可以用是不是。
07:23
好,那有的货这个部分注意了,在中间部分它有几个页面四个。是不是啊,四个,然后不不断的不断的替换,一会一会他进进来,一会儿他加进来,一会他加进来又加进来,那加进来的话通过谁呀。通过谁?弗拉格弗拉格?是不是从这根本不断的把这几个页面给切换,就是我点它的时候,然后呢,就得到这个页面,点这个的时候得到本地音乐,把它给替换进来,替换进来通过flag去替换,是不是就这样的一个结构,也就是说上一次的内容重点要掌握的是架构,你建议大家敲过两遍三遍都可以,因为这个你明白过后面试问得着。
08:20
面试过问你,诶你这个软件的架构结构是怎么一个形式是吧,你面试你说诶这个软件是怎么做的,怎么做的,下面是radio。啊,可以这样这样做啊。好,那同学们在我们这个地方里面的话呢,就是这么一个结构,就是30我们最主要内容,那有了过后,我们就把它给实例化,好我把它把这几个四个页面都出始化,当然这四个页面是都有,有有一个共同的一个有共同一个互类对吧,好我我我我进来主页面。点击好在这再看一下这个共同一个积类啊,鸡类里面我是抽象的,然后呢,它里面被景配点被着配件配也是指示页面呢,那为什么我这里又没有继承什么域望什么的,但是我内部有用对不对,是不是啊,然后在电话里面的话一定来。
09:20
上下文说的话,然后一钓,这个一钓是钓抽样方法,那这个会钓谁的方法,钓孩子的,钓孩子的。那这个方法什么时候调用,现在调什么时候调用,是随便选中的时候就调调这个词才调用它,比如说我们在对方里面一选中它的时候,这个都被调用了,这就调他的音乐,这种音乐这的方法对不对?好,然后有了过后这些呢,就继承它实现我们特有的布局,注意布局一般来说点击时间就在除槽域的时候再设置知道吧,当然你在另对也可以,但是这在这里面设置最好的,好,然后data过后,然后我们就在这里面,就通常做一个联环请求,对吧,因为我们规定了当孩子消要除好数据的时候,从启该方法用于请求。
10:14
数据或者是写数据,那我问大家同学们。这个音乐对的方法我们可以省略吗?从理论上是可以省略,就说我在一初始化的时候,我就直接请求网络了,然后就设置,就像我们在就像我们的it里面,直接然后加载视图,然直接有网络,然后就显示是是可以这样的。如果你这样做。如果对于我们这个架构而言的话,就。建议不要这么做,就要拆分两个,为什么呢?它有时候非要这样子,我点某个页面过后才再去请求网络,那如果你选成一个方法,你是一点,它就立刻就就就说把数据又加了网络了,就没有不可控,知道吧。
11:06
所以的话,我分拆分两个方法,我想什么时候掉就什么掉。但是仕图是不是只要这个运会创建是都已经初始化了,所以的法律分开来了?以后就好扩展知道吧,好扩展OK,所以建议大家以后。View的初始化和数据的请求一定要分开来做,分开来是吧,就像这个中国改革开放一样,之前是大国范集体,后来还是分分田到户是吧,为啥呢,调动积极性嘛。但当然这里面不是调用积极性,这里是什么呢?并一个方法,最好是做一个功能,是不是我面向对象不是这么说的嘛,就是讲那个封装的时候是不是一个类最好做。做做类似的事情是吧,那一个方法做单一的是不是,那如果我们在U里面又初始化视图,又请求数据是不大好啊是不是,所以我们要把它什么分开来明白,同学们,还有特别是联网请求的时候,大家注意我们联网请求或者是加载数据,你要考虑这哥们有可能很耗时这种情况吧。
12:18
好,当我们进来,一进来你你会发现我们现在一退出一进来。瞬间是加载起来了,这种呢是本地的很快,但是假如说我在你休眠,那如果休眠了,你觉得我们的这个代码还能够支持吗?啊。还可以,为啥,因为我在哪里做啊,分建神呢,你想修多久就多久,对不对,明白吧,你看也就是说那你修个五秒也没问题,为啥用在子线程中对吧?好,那也就是说我们可以把它给休眠一下,大家可以看到它就加载这个效果运起来。点击你要是真的加载啊,你要是隔一段时间才显示啊,看到没有,这样的话你就感觉到哦,它就和联网请求差不多了,好那没有找到视频这块是默认要求,根本要隐藏啊,好那我们就把它给隐藏,这样的话呢,就特别像我们的那个效果了,就和网络请求一样的。
13:17
好,那这个时候我们把这个没兆视频默认呢是隐藏的,好那这个时候我们再去运行呢,它就有一个圈圈在线着,然后一旦加一旦请求成功过后呢,好这个时候呢,他就OK了,你看是不是啊。然就显示,你看这样的话,我们就隐藏就可以了,那隐藏就在这个线圈的过程中,我认为它是联网请求,也就是说对于我们当前这个结构的话,我把读取本地的那个改为联网请求,得到数据是瞬间的事情呢,是知道吧,因为我考虑到的是这哥们万一他手机里面有64。是64GB不是很大,然后他装了很多电影,很多有些人呢,特别喜欢安全剧,然后呢,韩剧啊什么的放在里面,然后一大堆是吧,那这个时候你要读取出来是不是很好使啊,我们所以的话你要考虑中,所以的话我们就算就算他花了很多时间去读,我们也不会出现A异常。
14:16
什么是AI遗产?啊,什么是A异常,你你说一下同学,你这这那位同学什么是AR异常,你说一下啊,AR异常什么是A异常,Na RA异常,什么NR异常啊ni异常,就程序无响应异常,通常是我们在主线程做耗时的操作导致的,知道吧,那也就是说我们不能在主线上直接请求网络,应该在哪里啊,分线程就像我们现在一样,同学们,我们其其实现在请求网请求本请求这个就相当于是在分建层,好我们看一下音乐,对的,这里面你看这是一个在分阶层啊对不对,那以后你直接在那里请用网络是没问题的,知道吧,因为我们就模拟了,你看两秒钟是五秒钟,十秒钟,一个小时堂,你休眠都都都没有影响。
15:19
啊,因为它是分电子嘛,对不对,OK,好,那同学们有了过后呢,我们。啊,在这个地方里面列表有了之后,然后我们一点是把外界的播放器调起来,之前我们做过呀,然后现在一点是把本地给调起来了,那么当面点击的时候把外界的吊起来特简单。就这个代码,这代码这个意图是什么意图啊,影视意图,影视意图就是我没有去调具体的某个类,而通过匹配谁匹配成功是吧,对叫谁对吧,好,这个是影视图对吧,通过匹配匹配,然后呢,调用我们这个啊合适的类。
16:13
合适的,哎,啊还是activity好,那这一块呢,就把它给调起来,这这这里面就date,这是一个数据,这是我们的一个类型,然后随屏配随空就掉水,那如果我们的手机里面有多个播放器,它对这个动作就进行监听了,是不是多个就掉下来了,好,那这个呢。数据还是一样,那么在地方里面呢?好,我们是指定谁了吧,那这个时候只存给他了吧,存单过后,它这里面设的date,你看这个数据里面,注意是它date就有了,有了过后它这里面有个方法叫get date,是就my date就得到了它返回一个什么L,所以在我们这个地方里面,我们得到的叫get date get date其实是谁,就刚才这个方法明白了吗?明白了吗?好,所以他得到的是来自于哪个数据啊,是这个数据啊,这个数据就是我们的谁,就是我们的播放地址啊,明白了吗?好,很简单的事情,对吧,然后有那个后我们的地方里面,上一次我们用到了这个控件。
17:31
六感觉好神奇哦,一下子能播起来对不对?今天我们继续为讲一讲,然后这里面还说了一个准备监听啊,这个准备监听呢,其实就是当我们的底层解码器准备好的时候,回调这个方法,但回调过后意思就是说,诶,我已经识别你是什么啊这个文件格式了,然后呢,已经把头加进来了,然后你开始播放是吧?好,这个时候呢,我们一调次大的就开始播放,如果你不掉它不开始播放。
18:08
知道吧,就像我们。这个神舟六号上天是吧,各项准备工作是吧,然后最后呢,啊问各个部门的人是吧,准备好了没有,准备好了,准备好了完毕,准备完毕,准备完毕好接下来就等我按了个键启动啊神舟六号上天了,那就是靠它是不是啊,一掉它就开始正式播放,知道吗?好,它的作用就是开始播放好,这个呢叫做当播放出错的时候回调这个方法。那回调哪个方法嘞,当然是里面的这个方法啊,那回调那什么时候出什么情况会出错呢?假如说我们播放器呀,它这个播放的功能是有限的,假如说你去网上下了一个这个本地手机不识别的一个视频格式,对吧,大家去下什么片,一般是点avi这种格式对吧?好,那这格式的话呢啊,如果是电脑用QQ语音肯定能播是吧,但是手机上呢,可能播放不了,这时候呢,它会报一个错,就只要是不支持的格式。
19:27
那么呢,都会跑一场,当然还有一种情况,你播一个网络视频,播着播着突然没网了。那播放器一般他就会报一个错误啊,也会回到这个方法里面来,知道吗?好,那么还有假如说你去。你去这个啊,播一个下载文件,有不完整的,刚好拨了一个空格,空白的地方,它也会出错。就一个视频呢,就是他下载的不好,断断续就是下载就你显的代码有问题,就是要没有同事就遇到这个问题,就是他显得播放功能不好,然后下载中间有空白。
20:10
就是没有内容嘛,然后一播这里就出错知道吧,好,那还有播放完过后,它就会回到这里,当播放完成的时候,回调这个这个方法,也就下面这个方法,这这方法,那当光文的时候呢,回到这个方法,我们做什么呢?如果没有下一个视频了,那我就退出吧,那有下一个应该怎么办?直播下一代自动播对不对?就像我们在一个网站看视频是吧?看这个啊,武神赵子龙是吧?然后一看播第一集完了它会自动到下一集,到下一集的时候他播一个广告是吧?然后再播,就是他怎么能知道播下一个呢?其实就是这有个监听知道吧,他很自动的,并不是说我们人为后台有个人是吧,播完后他帮你点一下,就是这样吗?肯定不是,对吧,那这么多人是吧,有些有钱有户要每天在线的人是吧?几千万是吧,那这样的话你想。
21:21
那哪有这么多人去帮他点了,对不对,肯定是自动的是吧?好,那还有这个控制面板,控制面板的话呢,一会儿我们会说啊,这就是我们上次所讲的内容,那么今天我们讲什么呢?今天我们将将会把上一次没有讲的继续讲,然后实现我们这样的一个效果。哪些效果呢好,比如说我们会把这个空的面板做出来。好,这个你看这控制面板啊,这是我们自己定义的,我们把它叫做控制面板啊,然后的话呢,我们还做一个视频的一个进度更新,大家可以看一下是自动更新的啊,这都是我们每一点都做出来的,对吧?大家所看到的一切都是通过我们辛勤的劳动,我们的拼搏做出来的啊好还有设置电量,这个电量的话也是我们人为做的,不是系统的,你看到没有电量,好然后时间跳动也是我们做的是吧,假如游客们在看视频是吧,一不小心了看超时了是吧,这个时候呢,我们他都不用退出,直接看时间是吧,就就就去,一切是为了用户着想是吧。
22:33
还有从列列表啊,就是从这个列表,你看从列表跟模式才可以播放下一个啊,这里面都是有列表的,看到没有都是有列表的啊,都列表的。啊,都列表了啊,它默认是是是这样的,但是我们没有处理这个状态啊,所以的话呢,你看一点下过过后它还是播的一个状态,这有问题的,到时候我们把它解决掉啊好。那有了过后还要播放,播放我们我那个后来自动播下一个,然后播放啊播放面板的一个控制,怎么控制呢?实现我们这样的一个效果。
23:09
长按播放,再长按暂停双击变大啊,这个的话呢,好,我看一下这个没有没好没变化啊,那就是这样,我们呢,可以这个长按再长按单击是显示出来了,好一你看它会自动隐藏12345隐藏对吧。大家想想是有自动化呀。你看你就想知道该怎么做对不对,这怎么做呀,对吧,后面的话呢,我们就会讲到了,好,然后的话呢,还会讲这个自定阅的入啊,这阅率还有那条生音啊,不一定能养到啊,不能养到,反正的话呢,这是我们的一个计划啊,那同学们,这是我们上一次和今天要讲的内容把视频。
我来说两句