00:00
同学们,今天我们来学习自定义控件。什么是智力控件呢?好,可以这么说。我们手机上看到一个非常炫的,或者说安卓系统原生没有的效果,这样的控件基本上都是自定义的。比如说大家在不同的手机上去安装QQ,你会发现它呈现的风格是一样,那么他其实也是自定义的。对对,也是这个意思。啊,那包括我们一个按钮,你看我们点下去,诶,它的状态和系统的不一样,其实也是我们自定义把这个背景给修改,对吧,那么也就是说自力控件有几种方式呢?首先自力控件它是有我归纳为三种啊三种。第一种就是用系统原来的那些控件进行重新组合。重新组合,然后呢,形成一个特定的效果。
01:03
这是我们自定义控件的方式的一种办法。就系就是用系统的那些控件模式份改,然后他在布局文件重新组合一下。然后实现我们特定效果,比如说我们优酷菜单啊,这样的一个效果给大家看一下。优酷菜单,比如说优酷菜单,那这样的效果的话,就是用系统的控件。系统空间,然后呢,去重新组合,就形成这样一个效果。那么这是一种自定义方式。还有我们整个安卓里面要显示视图的主要有两个空间,一个是玉和玉不图对吧。但是玉和玉他们之间呢,是有一些区别的。当然它有没他们也有关联,就是我们玉古龙卜是既是入了是吧,那也就是说,但是玉古龙土里面的孩子又可以是玉,对不对。
02:01
有这么一个特点,那也就是说,如果我们制定一个控件是继承六。和技术用股骨,然后能做的事情又是有很大的区别。比如说我们技术U的时候,这个时候我们只能做的就是。在里面绘制一些东西。但是不能。操作多个孩子。因为入他自身只能操作他自己的一些东西,但是玉胡入骨就不一样,它里面可以有很多很多孩子。比如说我们的线性布局,相对布局,这些都是预估头。明白吗?所以自定控件有三种方式,一种是用用系统式控件成组合,第二种是制定一个一个类继承U,第三种制定一个类继承玉骨路谱。这三种方式实现资金空间。哎,有同学说老师啊,那么明明去看源码的时候发现我们制定一个类继承的是历史欲望。
03:06
继承的是真布局啊,继承是香的布局啊。不管你是进相对部举例属于还是什么,他们的户类是都是我们月国啊,所以我们是这么归纳的,知道吧。OK,那么我们在这个地方里面啊,制定控件就是什么呢?就是在安卓系统中,用系统自带的控件重新组合,或者自定义类基础域或者预录谱。然后实现特定的UI效果,这叫自定义空间。啊,这里。好。OK,这是制定空间这个概念能明白了吧?好,这概念的话呢,如果不明白,一会我们会在各种案例中去体现,你就很明白了。为什么学习制定贡献呢?它其实是为来解决我们一些问题的,比如说。
04:00
当我们要做一个控件的时候,在所有设备都显示。如果要显示一样的空,一样的风格,这时候我们需要制定空间。比如说我们用一个按钮。一个按钮的话,我们在小米手机上,华为上,不同的手机就是一个按钮,我们如果就用系统的原声空间,它会导致一个问题,就是不同的手机显示的风格是不一样,因为不同的厂商对这按钮的风格进行。修改了。但是如果我们对于我们一个软件的开发商而言,我们希望我们的软件或者我们的某一个按钮,比如说我们作为购物车购物软件这个。叫添加购物这个按钮是不是很重要啊,因为一添加进去这个用户就。购买东西就付钱,这个按钮是不是引导一个按钮啊很重要,我们想在所有的手机上显示都非常漂亮,而且没有变化,这个时候我们肯定要自定义空间才能做到,因为不同的手机它风格不一样,这样是达没法做到统一的,所以在这种情况我们就要用到这里,比如说我们安卓2.3的时候,按钮的状态你看。
05:14
默认这样,按下这样,但是四点一点按按钮都变成这样了,那如果我们要统一,就需要自定义,这是我们为什么学习自定义的原因。其实就是解决。系统的某一空间在不同设备上效果不一样的。这种情况。好,第二个理由,整个软件在不同设备的风格统一,就比如说我们的QQ是吧,我们在所有的手机上都要统一起来。那这个时候就是对这一个侧滑菜单其实都是质疑的。这个策划啊,都是自定的,那也就是说包括整个软件的风格这些东西都是自定义的,可能设置背景,设置样式等等这些效果。那么呢,对所有控件都需要设置统一风格,这样的话呢,也是它只是上面这一种的一个什么,之前这里面是一个控件,这是个多个控件,所以让整个软件在不同的设备统一,这样的话我们血液也需要自定义控件。
06:16
OK。然后。那么呢,大家明白的是,系统自带控件功能是有限,增加功能或者功能太多,减掉功能也需要自理控件,比如说我们历史view,系统自带的历史view,它能下拉刷新吗?不能。那也就是说,如果我们要做一个下拉刷新的功能。都是需要。自定义,自定义通常是继承系统的隶属用,但是隶属义的父类它是于古洛普,所以我们归纳为是吧,它是属于制定一个类型的用,不这种情况,但是它本质我们来继承的是隶输入,对不对?好,那么也就是说系统的隶输入它没有这样的功能,我们想在基础上增加功能,所以我要做一个增加功能,做一个下拉刷新,这个时候我们需要制定空间,因为它功能不够,这种情况我们也需要制定空间。
07:15
对吧,还有当我们系统功系统控件的功能,它功能过多。他一就是它功能多了,我们要把他的某个功能去掉。比如说后面我们会讲一个北京新闻,然后呢,让玉佩姐。让它做软件的架构,然后呢,我就想把它左右滑动,不能屏蔽掉,我们也要制定一个内容,把它触摸时间返回Q,然后呢让它不可以滑动,那么是把它功能力减少了。这个时候也是自定义空间。啊好,那么呢,像我们预及原来的事件,然后呢,我们把原来的触摸事件把它去掉,让它的功能减少了,那么也这点空间。
08:00
那么也就是说同学们,我们这定控件的话,有这种情况,一对某一个控件,我们让它统一或者。那就让他统一,我们协调空间,第二,我们对整个软件的风格,我们让他统一,也要制定空间,第三,系统的某一空间,它的功能过多过少。我们要把功能增加需要整理空间,把功能减少也要整理空间。那所以的话呢,自定义控件的话,总共分为三种,一般情况我把它分为三种,就是也就是我为什么要学习自定义控件,三个理由,三个理由,第一个理由某个控件,第二整个软件风格,第三,某某些系统的控件里面功能过多,或者功能不够用,我们都需要这里构建。但是呢,自定义空间有一个原则,就是我们不能。不能,这个只要遇到某一个效果,我们都会制定空间,只要,但是如果是系统的空间,它满足我们的需求,我们不,我们是不需要的。
09:04
我是不需要的,为什么呢?因为你资金空间,你带来工作量可能最大的bug吧。有些引进的话呢,需要大量测试才出现知道吧,所以这个时候我们如果老板就说,诶这个可更可以了啊,然后呢,你因为你优先用系统性空间去做嘛,诶还不错,然后他说可以,那就不需要。又不需要制定啊,因为制定空间可能会带来bug,而且会带来工作量对吧,所以能用系统空间做的事情。建议优先优先,但是大多数情况我们可能需要自定义了,对不对。好了,同学们,这是为什么学习智力空间的原因,那么智力空间它的重要性有多大呢?第一,如果你做一个安卓程序员,那么基本上都需要这个空间啊。扣奖。或者说以后你做其他开发也需要,为什么?某一个框架,它提供的功能有限,你让他继承它,在基础上增加一功能,它其实也是属于这个空间,对不对?
10:07
他和我们的思想一样,然后呢,你会发现只要你做安卓开发都离不开,就是工作是必须的。工作是必须的,为什么呢?因为以后你做开发,你想安卓这样,安卓除了联网请求,然后显示数据,显示数据,显示各种各样的效果,但是系统的控件呢,它有限,这是我们都需要制定控件来实现,所以工作是必须要有的。啊,那么。工作必须要用。那么也就是说通过这几天课程学习过后呢,大家要掌握的是不光掌握课程的内容,而且要掌握以后工作了能够看别人自定义空间的代码。因为有时候你要基于市面上某一个效果稍作修改,才能变成想要的效果。但是如果你一点基础没有,就比如说你就上个小学,然后我让你看。
11:02
看初中的题,那你肯定看不懂。但是,如果。你读了高中再上初中都很简单,对不对?所以就是这个道理,所以大家课堂的内容可能就是这些案例,但是你以这样的理论基础去看起来就简单得多。所以。自定义控件,我们就可以看你编代码。对吧,还有一点面试的时候可能会问到。不能说是,可能应该是百分百的问道,因为制定控件里面我会给大家介绍一些,就是安卓中适应的传递安卓U的一些原理,还有U和U的区别,那这样的话呢,可能面试官会问你,诶U的生命周期,你说一下是不是有会这样问。对吧,那也就是说这是制定空间的一个重要性,中性。好,那同学们,那也就是说这就是什么是自定义空间,好,我们把这个保存一下。
我来说两句