00:00
来我们就讲一个,就是其实接下来我们要讲的呢,就是让它变大,变享受功能。但是你发现,你会发现系统的API没有。这样的一个方法,所以我们需要什么自定义,大家可以看看预留域里面,大家看好,我们拿到预域,我们随便在里面去点,它有个点的方法set。Video,你看你能看到size什么这样的吗?Size或者到。这个是设置屏幕打开对吧。但是你能看到我们屏幕设置屏幕size大小这样的一些方法吗?看不到这个时候我们就需要重新,还记得我给大家讲过自定义控件吗?自定义控件我说过,就是当我们用系统的控件的时候,发现它功能不够,我们用的时候我们需要自定义吧,或者他的功能多了,我们把它功能给。
01:05
砍掉也需要制定空间,它也是属于对吧,那如今呢,咱们需要让它变大变小,这时候呢,也需要制定空间,这个时候怎么做呢?这时候我们就要自己做了,好那么系统的类叫预留域,我们自己写的类也叫预留域,可以吗?可以吗?有的同学说不可以也是可以啊。比如说。咱们这个班有一个叫杨光服,另外一个班也叫杨光服,可以吗?可以呀,对不对,咱不在同一个包里面,明白吧,是可以的,但是如果同一个包里面有两个类名一模一样,可以吗?他就冲突了,就像咱们班里面有两个阳光服,那我如果是老同学阳光服是吧,那到底是教育哪个阳光服啊,就不知道了,那只能区分一下大阳光服小阳光服。
02:00
是不是?但如果都叫一模一样的名字是没法区分,所以同一个包是不可以叫同一个名字,但是同一个不同的包。两个类相同是可以的,对吧,这些找的不一样,但是即便如此,在同一个应用里面,然后两个控件名字叫一样,如果你这样的设计师,你感觉你这个程序员不如流,对不对,也不行,但是如果说系统的用控件,就用我们控件,这种是和系统一样的是。是更好啊,对不对,因为用的更好更好嘛,但是你要注意导的包不一样,好,接下来我的地方里面去创建一个类,这个类的话和系统的一样,叫video view好,但是我呢,继承系统的video view。好,精神系统的U9UUU好,那么一进来过后,它会自动把全把我们的全利名写上,那构造方法我们写几个,两个对吧,两个,因为我们在布局文件就还用操作方法。
03:05
好,那同学们有了过后呢,在我们这个地方里面,这个就是我们自定义,自定义一域对吧?于六好,那我们一会要用它来做什么呢?啊,同学们是这样子的啊。首先制定一个控件,我们要显示这个时候需要测量吧,测量的话呢,好,这个时候大家看好。在我们这个地方里面,它有一个在这个方法里面有个测量方法,它是作用保存,这个方法是用来保存结果的吧,我把它给复制过来,然后来到这里,那这里过后呢,你把这些参数诶传给他,直接保存,你的父亲给他有多大就直接给多大啊,这个你可以把它给阻止掉,就这样有多大多大,是不是我就就相当于这个就是相当于是保养我们的测量结果啊,保保留保存我们的测量结果。
04:06
保存测量结果啊,那也就是说我们测量的目的,最终得到结果是由它去保存的,保存过后以后我们在绘制的时候是就可以用的。就可以取出它保存的参数进行会上,所以你要调这个方法就可以了,就说我我就说我直接这样去做这样事情就可以了,好,接下来就是我们设置一个方法。这个方法的话呢,给外用的叫set的这个video的一个好,就是屏幕的一个大小吧,七,然后VDTH啊,然后特7H书架上多高啊,那怎么做呢?好这个时候。Get To Get这个layout啊,然后呢,把它。复制下复制下,然后呢,我们就叫N好,这个时候注意啊,打包呢,导约不洛普的。
05:08
啊。到玉古路浦的啊。好子业这么多,打谁呢?鱼骨肉脯的啊,等等,鱼骨肉脯。第几个啊?这个是不是好OK,然后它这里面有个方法叫做。快。宽的话,我们是不是把它存进来好,还有一个叫高等于高,然后注意set我们的那out。好,就把这个什么呢设进去,就这样的话就可以把视频变大变小,可以搞定了,好这是设置视频的画面这个大小对吧,这个是啊,要要设置视频的宽,这个要设置。
06:08
是顶的高,哇塞,搞定好,那么有了过后,那接下来这个类似我们要下太上的太上战场好不好?来到这里找到布局文件。这里,然后把那些什么替换掉。粘贴,然后有了过后呢,把我们系统使用的这个预留。没用。阅毒又把他导包给什么干掉,好系统的阅毒干掉他会自然而然那些岛杂嘛。啊,所以这个时候能报错,这没关系啊,我们去啊,Out。因为哦,那这样这样我们呢,这个时候没有打包啊好他不他迷茫了,这时候我们打你看有两个,那我们选我们选谁啊。
07:00
肯定是自个的对不对,我们目的就是要替换成自个的吧。啊,所以我们你看还还有错吗。分错了吧?好,那么你现在运行起来应该和之前是一样的,没什么区别啊,当然会有一点区别,它可能这个时候来变成全屏了。好命运行起来,先看看,肯定是能过的,知道吧,好命运行起来就是我们一点一点的往前走。好,同学们,大家可以看看哟,这次是全面的吧。对不对,是不是前面呢,但是呢,我们可以试一试,我们的方法到底起不起作用,比如说在我们这个地方里面准备好的时候。是这个方法里面啊,然后我们去调这个方法叫first,刚才这个方法叫什么size对吧,然后我们啊,50宽50高60,是不是可能会很小啊。我们就是要看这种奇特的效果,看管不够用不管用的,那如果能够设置指定这么一个大小,那证明咱们是有作用呢,先看一看啊,啊先看一看不起作用,我们再调呗,对吧,好运气来了。
08:12
哇塞。哇塞,可以看到是多小啊对不对,所以以后你就想瘦子多高多多高,瘦子多高多多宽了,是这样的话,你看咱们成功了对不对,是不是变成这么小对吧?当然咱们也可以把它吃的大的,比如说这个300。好,那宽300高。200呗,是吧,好,这个时候大家可以看哇塞就按照这个比例了,对不对,到时你设置一个黄金比例,然后设进去哇塞可以。可以。比别人的播放器更牛逼更酷是吧,你看这里是这样的一个比例啊,是不是你看多酷啊是吧,想怎么设就怎么设,对不对,好好,那有了过后同学们接下来我们说继续去做啊好,这个时候呢,我们在地方里面呢,就这么多了。
09:10
如果直接这么写的话是不大方便的,其实我们可以对这个方法进行略封装一下。怎么说呢,擅场的video。Video啊。太,这什么意思呢?其实我只想做两种模式,当然你也可以做很多模式啊,什么意思呢?假如真的是一个。屏幕,那么我们现在有一个视频。同学们啊,任何一个视频,它都有真正的画面。大小知道吧,原始的,那假如说这个视频的大小就这么一点。那么我们想要这个屏幕显示,可能呢,有一种办法就是原始播放。对不对。
10:01
然后呢,大家还可以做一种就是诶,我等比例拉伸到这样子。这样的是刚好,画面不不臃肿吗?如果说。你的画面是这样子。如果我去,你发到这样,是不是人人的头像会变大呀?如果是这样的话,那我就可能就这样拉成,诶,那这样的话就就可以了吧,甚至你做的再好一点,你可以。90度,然后这样去拉伸。就让他拿着手机横着播,就比如说以前我们这么看视频,我是不是那个技术大家自己去去弄啊,但是我只告诉你这个思路,但我们只处理就是很紧的。啊,很明显拉伸知道吧,那么因为我们处理两种模式,一种是以。就比如说你这个不像这个画面这么小,然后呢,我们就按照这种等比拉伸拉伸这种这是默认的,还有一种就是不管你视频有多大多小。
11:03
我选B。这是最简单的,对不对。明白了吧,做这两种OK,好,那其他的话大家自己去算,自己算那个指数就可以了,你说多大它有多大,好,然后有了过后这个时候呢,我们就这个时候墨一进来的话,我们就是。就是什么呢?就是啊默认就比如说我们的这个对屏幕密,就是我们的一个default啊,默认的一个是。啊,是苦力,好,这是屏幕的意思吧,好,然后把它给。串联一下。好好注意,这个的话呢,是int类型。然后呢,这个时候我们叫三,其实你叫一也可以啊,因为我们是单独在一个方法里去选的,是可以区分的是吧?啊这个时候一个是默认默认播放。
12:02
默认播放是以某一边为准啊。好,还有我们做一个全屏播放,全屏就变成什么,对吧,这个是四对吧,啊这个呢,是我们的全屏播放播放。全播放好,全播放的话,这个时候这个方法用用不着啊好刚才我们来到这里。这防火墙没有啊。好,然后有那个货代看好我去。这个把这个方法给创建出来。这个时候呢,就是我们的啊type就行了。语句对吧,啊,这里面还有之后呢,在我们地方里面case。好。第一个case就是我们的全屏,全屏比较简单对不对,好就是全屏播放bla,然后case,然后就是一个屏幕对吧,全屏播放比较简单,这是我们要得到全屏。
13:18
说只在全屏的,然后去调这个方法冲进去就可以了。很简单。当然然后我们这地方里面也可以啊,也需要是一个字段,就是是否是全屏播放啊,也是是鼓率。好好默认呢,不是全边,那么如果它一旦掉,这就变成多少Q,那如果一旦掉,这就变成多少不好,最基本的已经搞定了,好,当然我们可以把这个问题放在前面跌。就是是否全播放,是否全屏播放。
14:00
那么这个时候有了公布嘞,好同学们,接下来我们继续来到这个方法了啊,来到这个方法全播放,那这个时候我们需要得到的屏幕啊,屏幕在哪里呢?在这里得到阴利的data,好,我在下面,这么我在上面得到。这对是在O方法执行的呀,好得到。屏幕的高和宽高框大家做过吗?得到屏幕的高和宽做过吗?好很简单对吧,刚才我们service window service,然后的话呢,调类型转换。然后有了过后,它这地方里面去去盖到我们的皮肤的宽,这过时了对吧,但是我一会可以用。也不过时的是库率屏幕的VDTH屏幕的宽了。
15:06
这是屏幕的宽,这么问题吧,屏幕宽对吧,好有了过后。接下来就屏幕的高。这个叫什么?Go。那这个时候就是使苦令可以是吧,好把它给。用几个这个好,这个呢,就是我们屏幕的搞法好好那感觉在地方里面用过时的方法是感觉爽不爽啊。好,这个地方里面呢。我看看有什么提示没有。然后在对方里面呢,还没提示,但是我这地方有一个代码啊,当然你用这个也可以啊,但是你感觉不爽对吧,这里面呢,也有一些什么,得到屏幕的宽和高,哇塞是吧。
16:04
好把它拿过来对不对,像这种代码。看没有?搞定是这个是不过时的,它用的是window是还是defult,是这个吧。然后他得到是这个啊,多了这么一个,然后他的恐告,那么其实两种都一样的啊,你用过时的也没事啊,但是的话呢,既然啊,既然的话有新的那种,我活来不会用它呢,对不对,好。那这个时候有了过后同学们在我们的对方地方里面的话呢,就得到屏幕的公告,注意用这个也可以啊好。那么得到屏幕的框弧高了过后,接下来做全屏就比剪了,那这时候来的那个方法叫加的方法,叫什么是video啊,是type video type这个时候就可以做了,哇塞,这时候就video view去设我们的size,然后屏幕的宽,Screen屏幕的宽,屏幕的高是搞定了吧,好,这个很简单。
17:12
然后这个默认屏幕就稍微要难一点啊,这是全屏,这个呢是默认,这个默认呢,它要遵循一个算法。怎么一个算法呢,就刚才给大家说过,就是说如果你这个是这样的一个视频,我叫在这个屏幕上放了放,我叫等比例什么。拉伸。对吧,那这个算法的话呢。系统帮我们选好了,我们拷贝一份代码过来就可以了,好来到哪里。啊,这里。找到他。它这里面有一个测量。Myho。Man。
18:00
我们修复站好这里呢,大家看好,这里面有个代码。好,这个代码的话呢,就是帮我们算这个算法。这个不是。这个是啊。这个就是好把它拷贝过来,这个就是那个算法啊。就是刚才我们说的这个算法,以某一边为准,它自动把我们呢。去做这样的一个事情,好,那把这个算法考不过来,到这里来,因为我现在在计算某个值过去啊,好不用担心啊,不用担心,我们挨个去把它搞定。首先在我们地方里面呢,这个空和高,现在我们还没有把宽定义出来。好,这个时候呢。啊A等于零好,应的类型与推求等于零好,这个是我们的,就是一按播放视频的。
19:03
这个宽和高啊,现在默认,因为我们先让它不报错嘛,默认先让它什么,对于零先让他先定义出来对不对行。复制一下。行M。好,这时候就可以了吧,没错了吧。好了,同学们,如果一个视频播放高和零,我们有必要播放吗?所以这个时候我们一定要判断这个本身视频必须得大于零,然后。啊。啊,这个video。与九的高也有什么大于零才有意义嘛,对不对,否则我们是。不管他,他走这样的一个算法。
20:02
好,然后有了过后。在这个里面。在里面VIDEO6算一个size子宽高就可以了,但是注意了是这个两个视频是肯定不行的,这个视频的真正的括号高吧,好,那这个时候是什么呢?注意这个是我们屏幕的宽。这个呢,是屏幕的高。哦,好了,谢谢,谢谢同学们提醒你们太好了,你们是好人。好好,是不是可以啦,同学们,哎呀,搞定了,注意啊,明明我现在是屏幕的空和高,但是以后计算出来是不是我们要的值啊啊大家注意啊,虽然我现在写平幕空方高,但是它是计算后是重新赋值啊。
21:00
对吧,都会重新复制。那么这个是有了过后呢,注意上面这个是它是什么呢?是十我们。真实真实我们视频的高和宽,就说他这个是什么,就视频的内部。他那个真实证据告我们,我们要把它获取。怎么获取?你看在这个方法里面有吗。你好,干啥?Video。是没有啊,没有,但是这里面有吗。他有一个参数叫做你看视频的空投高是有啊自自传。有,但是是说是有的。但是他又没有get方法,看好啊,Get定是没有啊,没有这种方法。但我再看一下这哥们他是怎么得到的呢?我们看一下哪个地方负责。
22:03
那就复制。啊,就是我看哪个地方负责,所以就是第一首次负责。哇塞,应谁负责啊?负责MP是谁?神密分类啊。那大大家再想想,我们这地方有个回调,回调里面回调是属什么来的。啊。啊。回答什么?见到他时,我都特别的开心呐,找到你,找到你,是你就是你,就是他吧。好,咱们找的就是它,是通过它可以得到视频的高冠了,哇塞,这不是我们期待已久的吗?好,这是盖章我们的video。Video好,这个video的哭啊,对吧,这个视频的video的。
23:00
是可以啦,然后有了过后我们就这样子。怎么做呢?我们叫这个小写。然后这个的话呢。复制一下。啊,这个消息好,那么把它给什么创建出来成内在层变量吧。哇塞。诶,得到了。回去再把它给串出来。咱们就是欧耶啦,好。这两个就是啊,视频本身视频的。本身的。啊宽和高就说视频,不管是注意啊,不管是你在网上看视频还是怎么他你们看到的可能是全屏的还是怎么一个样式,但是这个视频本身它也能真正的知。但是我们都是把它拉伸在的手法,如果这个如果这个视频。
24:03
他特画面特别高,特别清晰。这个时候我们。这个,但是我们用户的电脑的这个这个屏幕是有限,我不可能把它给撑出去嘛,不是把它缩起来,但如果我发现这个视频框架本来特别小,这么小我是把它拉伸一下。这样的话用户看了才舒服吧,但是他画面比较小的一个问题,拉大过后会出现什么。就不。知道吧,但是有一个问题就是。C、模糊,待会流畅。因为视频一旦清晰是一秒钟。它传输的。数据数据比较多啊,据网比较卡,是流量耗的比较多,而且这比较卡,都很清晰的话,数家带宽特别好。对吧。但是如果是你的画面稍微。要差一点。这个时候呢,它就会流畅。对吧。
25:00
不过现在的话呢,王比较光纤到户是吧,然后很很高兴的,比如说。啊,咱们家那个索尼电视屏幕65英寸。然后特别清晰。我小孩一看电视的话就感觉都舍不得走,知道吧,特别清晰,但是那种的也不好,为啥他眼睛太清晰了,就像现在你玩手机多点会发现眼睛有点痛。是不是,所以这个的话要控制好好的同学们在我们这个地方里面的话呢,好,我们得到他空和高,接下来最重要是用啊好来到这里,哎呀,找到那个方法,我们再找一找set好我们的video video。找到了吧,然后把这个值。重过去video的一个高是有了吧,好,那么这个时候呢,这两个方法就有了。好,那么这个时候有了各位同学们,在我们的这个地方里面注意了。
26:02
这个方法有了过后肯定没问题了,然后我们现在还做一个事情,就是当我们在双击的过程中。好,是也要去把这个按钮的状态给变一变的。如果你是全屏,这时又让它是默认吧,假如说现在是全屏了,我们的按钮的状态好,就是我们BBTBTN,那这里面是有个屏幕的一个切换的,然后去设一个背景。八点就某吓的。这个因为是全屏,就设置司库令。的一个默认。默认是default呀,好,那如果是我们的这个。啊全啊,如果是默认了,这个时候就要把它设为全屏吧,意思就是此时机可以什么全屏,就这意思OK。
27:02
好,那有的客户双击那里面我们做了吗?双击那里没有来到这里,好大家看好啊,我会回到双击那里怎么回去,如果我去找代码是大家更晕了。我要ctrl o。Undo。不回去了。看到没有就说大家注意啊,你如果你拖,你会发现你屏幕上一直在走,这时候我们就判断了,如果你是全屏,然后就set type type type,然后这个时候我如果你全屏,我就设置为默认。这个时候我们就是DEF破默认屏幕吧,如果你是一个默认的,我就设置为全屏对吧,就是负搞,然后是不是点击时间我们要做一做那两个点击时间按钮啊,来哪里on click这里面,这里面是有一个叫叫叫切换屏幕这个这里也是调这个代码就可以了,哇塞好,这是我们运行起来不管是点点击事件可以了,刷击屏幕是也套也可以了。
28:13
好,那同学们呢,咱们看一看呗。好。啊,这个我们并起来。找的这个默认的双击听到了吧,双击变小,好这时候状态你看这个时候是默认的,你看没有,这时候让我们全屏全屏了吧,一点默认,全屏默认对吧,变你看简单吧,同学们。所以你会发现。当我们掌握。安卓那些基础理论知识的时候,诶,我发现这功能无法满足的时候,我们可以自定义是吧,不光在播放视频的是自定义以后,以后大家工作大量的结。大量的用到自定仪啊,大量自定。好,那同学们这一块就搞定了,我们简单回顾一下这个过程。
29:01
我们这个过程呢,特简单,写了一个类啊,叫做预留,又跟系统一样是吧,但是我们去系统系一样的名字,是不是它这个自动帮我们加上。这个全名的。对不对,因为它你看在同一个类中有两个叫预留U,所以他必须得把包给加上,这样的有区分了。啊,这是一个,然后呢,我们的这个测量这个注意这个方法呢,取消掉啊取消掉,当然我们可以假如说我加上它,看出现什么问题呢。然后有了过后我们再去设置它啊,然后这个地方里面呢,就设置我们的高和宽,对吧,我们加上来看有什么问题啊。看看是什么样的一个情况。好,我们来试一试呗,啊一点击。默认的双击变大,双击变小,这也可以啊,啊也可以,所以的话呢,这个的话啊,大家加加都可以啊好那就留着吧,对吧,好那同学们有了过后,在我们地方里面主要就是我们设置这个啊方法对吧,你看我们是设置两个,然后这里面做一个数语句对不对?好当它是全屏的时候。
30:08
我们走着道就把这个屏幕传过去,然后是默认的话呢,就计算一下,注意这里是真实视频高宽,这里面是计算一下,这个代码呢,是拷贝过来一个算法,你不用去管它这些算法的话呢。啊,因为我们呢是程序员,我们把别人的理论用一下就可以了,咱们不是搞理论研究的,对吧,除非你读了博士啊研究生,你去研究下理论,因为咱们是程序员嘛,实践者,当然如果你有精力的话,去研究一下也挺好的。好,那有了后,同学们在这个地方里面呢,就收到这个信息,还有这个视频的啊,屏幕的。高和宽啊,这个的话呢,大家要知道两种想法啊。以前大家。得到屏幕的高和宽,有这样的啊,做过吗?做过吧,你们是用什么用这个吗。还是下面这个。
31:01
没做过是吧,那你就注意了,阿福老师两种都讲了是吧,好。你会一种就可以了是吧,一种就可以了啊,你就可以练一练。这是一个。然后的话呢,好,还可以给大家讲一个知识点,就是呃,大概一分钟是这样的,大家有没有去播放一个网络视频,就是这哥们呢。他要10分钟才播起来。有这样的招聘吗?五分钟呢?五分钟才播起来有没有,就是才播起来,一直在加载,五分钟才播起来有没有,有吗?就卡就是就是卡就是一后他一直在就是在加载,有没有国外的对好那就是那也就是说假如你下了一个国外的一个软件,这时候嘞。要五分钟才播起来,但是你的手机设置为十秒锁屏。
32:03
你家会出现什么情况?会就是当30秒锁屏了,然后五分钟到了,是不是视频播起来了,结果结果在锁屏的情况,他一直在说话呀。是不是是不是有这种情况,你看啊,因为我做播放器肯定遇到啥子遇到啊就是你。30鸟,他所写的。对不对,但是呢,你这个视频因为是国外的语言,它播可能五分钟才加起来,这个时候五分钟过后是屏幕早就锁了,但是呢,你再播起来。是很不爽啊,当然如果是用户的话,这个时候他可能30秒打锁开下去,30秒开下去对不对。但是你觉得用户是很郁闷的。举个例子啊,如果你是用户,然后播这个软件,不过后来这哥们老让我去开锁,然后开锁他就不看了。是你这个软件是就就就没有机会打广告了,那我怎么办。
33:06
对太了,刚才哪位同学说的说特别好,就不让他锁屏,怎么做好,就是引出这句话对吧,好小一个date,好它这里面有个方法,注意这个方法一定要在,呃,在我们的。注意在我们这地方是初始化它呀,初始化过后我们呢。我们可就是差,这个方法一旦执行过,或者或者我们来这里。然后我们去设置。不锁屏,它有个方法叫set,我们的。On。说的是queen。刚才都有啊。看到没有保持keep叫什么保持屏幕,嗯,是什么打开好这个呢?它就为什么不锁屏,大家可以试一试,你来雇佣你的手机设置为30秒都锁屏了,然后你看看他能锁不住,或者说你在一个APP里面去调这个方法,当然啊。
34:18
这个是阅读才可以用到啊,但是他也可以,你可以看,你可以看源代码,他也可以在这里去做。就是好,怎么做呢,你可以这样。啊啊,这个是应该是get window,然后set。AD。嗯,这个我记我看啊,它是在有一个地方也是可以的window这里,然后去set看没有。宿舍的,然后你去把这两个参数。啊。保持其也可以知道吧,不一定要预留肉里面。
35:03
好,但是在这个时候你也得。冰岛。好。Window。Manager。Window manager第几个,最后一个吧,然后点。Out。是不是?好,然后这里面。Keep。它叫这个好,然后呢,要过后你再设置一下。是吧,这个也可以,就是你在里面直接调这个也可以。两个是一样的,但是你这,但是这个阅读越乐,他直接提供了,以前知道吧,同学们基本本没有,我这刚发现的三个半我就上课的,因为我这这个方法太好了,所接在这里了是吧,因为视频本身就需要嘛,你旦缓冲的时候出来,嗯,他网网络很慢,可能很久才缓存起来,对不对,是这样的,有这样的需求啊,你看所以的话,按照系统的进步。
36:02
我们每个班的课也在进步,这个社会也在进步,所以大家以后工作了,也要不断的学习,不断进步,OK。
我来说两句