00:00
行,那这个呢,我们完成以后的话呢,按正常来讲,下一步要再做的话呢,就是希望这个圆环呢能够动起来啊,就我们一进入的时候呢,它虽然是60%的进度,那么希望呢,他就是A1点点这样加起来,看着这个效果更好一些啊,但是做这个之前呢,我们再做一个事儿,就是使用一下自定义属性。哎,这个我们在前面讲自定义控件的时候,是不是说过这个事啊。哎,说过了,那我们这时候呢,再回顾一下,使用一下啊,哎,使用自定义属性。首先呢,明确一下什么叫自定义属性。啊,就是定义可以在布局文件当中标签中使用的这个属性。啊,而且这个属性呢,是你自己定义的。嗯,像我们现有的这个空间里面。随便我们找一个布局文件,比如说就以home为例啊,这些呢都是视图啊,这些视图呢,这都是属于它的属性,只不过这些视图呢是系统提供的,属性呢,也是系统提供的,所以这不能叫自定义属性,那现在我们自定义了一个叫round啊这个。
01:03
Progress。啊,在这啊,我们定义了一个round progress,因为它呢是继承于view的,所以自然而然的就能拿到view里边定义的这样的一些属性,那下边呢,我们希望还自己再去额外的定义一些我这个round progress所特有的属性。那目前的话呢,我们是没有定义过,那我们是如何处理的呢?我们这里实际上也需要用到一些属性,比如说呢,在我们这个类里边,我们就定义了这样的一些属性。啊,关于这个圆环相关的一些信息,那我们这里边儿没有定义自定义属性,那就意味着回头你每次创建的时候呢,得需要从这个代码层面啊,就是Java代码层面去定义一些属性。就好比是我们说这个构造器一样啊,这个构造器这块呢,我们,呃,比如说你要是用这个,相当于是没有什么属性可言,这个呢是人家在布局文件当中定义过属性,只不过呢,我们现在希望做的事呢,就是把这些结构不要放在这儿了。
02:02
而是呢,把它呢全部移到,因为你毕竟是跟你这个圆环相关的哈,我就把这些内容呢,全部移到,呃,你这个布局文件当中去做一个声明,那就需要呢,把这些属性。啊,或者叫把这些你在Java代码当中这些变量啊,修改为我们整个你这个progress的一些属性啊,然后直接呢,在这能够调用。啊,其实说白了就是我们刚才这种写法也可以啊,只不过呢,我们现在呢,就想呃,把这些就专门的看成是我们这所谓的一个视图,它所特有的一些属性了,就像是我们这个test view一样啊,相较于view来讲,Test view呢,比如说啊,比如他自己有一个test的属性。啊,那这个test属性,我就是当你生明完test view,我就直接可以在这去定义了,而不是说呢,你自己定义那个test view,然后呢,自己又去写了一个这个属性,那就感觉太麻烦了。啊,这是我们,呃,为什么要把刚才这个事儿呢,再改一改,就是我们希望呢,用一下自定义属性啊,回头用起来更方便啊。
03:02
哎,为什么要定义就是这样呢?我们就可以通过布局文件的方式给这个视图呢复制的,而不用在代码当中去动态复制。好,那我们去定义这个,呃,自定义属性的时候呢,需要关注于这个属性的类型,就好比是我们这儿呢,看到的这些布局当中的这些属性啊,这些你能写它叫DP,这个呢写这个一,这个一后边呢,你就不能够写个DP啊,这些写其实是不对的啊啊然后这个位置呢,它就得是写一个呃,具体的一个ID啊这呢就是这样,每个位置呢,类型其实是不同的,那我们首先呢,再关注一下这个类型都有哪些。啊,这里边儿我们提到了八种类型。啊,第一种类型呢,属于引用类型。见过吧?哎,我们说谁在谁的上边,谁在谁的下边,哎,你得引用一下,这属于引用类型的啊。啊,回头你指定这个封的这个类型的时候呢,就得用它,然后color类型。啊,指定是一个t color啊颜色啊,用这种方式表示word类型。
04:06
这个什么时候见过?哎,对,你跟复视图右对齐左对齐是不是居中是吧?哎,这都用的出和false啊,然后dimension尺寸。这个很常见了是吧,宽啊,高啊,字体大小啊,那都是它啊。哎,是一个整形啊,整形意味着就是它没有单位。或者说要单位是一对啊,Weight权重,或者我们回头你可以再定义,像我们说的那个水平进度条或SPA系统提供的那个进度啊,还有最大值啊,那这都是in的型类型,Float的类型。这个见过吗?在哪见过?哎,动画当中我们指定透明度的时候,透明度零跟一,这不是两端嘛,中间的不都是小数点吗。
05:06
嗯,透明度啊,然后锥类型。哎,写一个test也是属于它的,然后呢,这是枚举类型水平,嗯,这个l lay out水平的还是垂直的啊,Horizontal,它是一种vertical,不就二选一吗?这是每举类。是吧,那就这么几种类型。嗯,好了,这个呢,相当于是一个复习,然后接下来呢,我们就可以去自定义这些属性,使用在我们的round progress里边,那如何去自定义属性,我们这儿呢,列举出来了,一共是有这样的四部。呃,大家就照着四步写就行啊,前面我们做的时候呢,也是这样做的啊。啊嗯,回过来,首先第一步。找到我们这个VALUE64在下面呢,没有,我们自己去造一个叫at t2S。嗯,好,进来。
06:02
在这呢,我们去声明一下,这个叫CAS sta是吧?啊,起个名字啊,起个名字我们就叫这个round progress了。封一下。在这里边啊,嗯,在这里边我们去声明,接下来就是一个一个的属性。啊属性呢,比如第一个我们这儿呢,一共声明几个呢,我看一下你之前你这块用过几个。这这七个。那我们把这七个呢,给它声明过来啊,那名字的话呢,不妨也就用这个名就行,所以我们这呢写一下。Round。Color。封一下啊,你接着呢,还得告诉我这个类型是什么类型。就就他拉走对吧,你不是一个颜色吗。Round progress。Color。Color行,嗯,还有四个啊四个我们就就直接这样。
07:02
整出来这四个,还有这个,呃,Round。嗯。什么呀,它的一个宽度啊。这个是什么?嗯。你这样想啊,那如果说有这样一个属性,你在布局文件当中,你用的时装你写你写什么。是DP。是不是写DP啊,哎,底门什么。然后呢,Test的一个size。什么20P啊,20DP还是底分什么。然后呢,是这个pro。这是多少?进度五十六十。ED,你这样想?Mark。
08:00
哎。OK啊,Ctrl shift的F一下,哎,这是我们说的第一步。啊,就相当于你在这个at ts这样的一个文件当中来造一个这样的一个scale sta啊造完以后的话呢,第二步,第二步呢,就是回到我们这个布局文件当中去用一下啊这里边需要呢,得声明一个命名空间。嗯,回过来找到我们现在想用的位置,Home,哎,这呢是我们要用的这个结构啊,在它的最上面声明一下。啊,前面这个写法跟你就照着上面这个抄就行。嗯,后边呢,起个名字,这个名字的话呢,你就自己定义就行啊,比如我们就写你像爱圭谷啊,商个谷都行啊,然后斜杠哎,就用第一个就行。声明一下啊,声明完以后的话呢,拿着这个名。像前面这个叫enjoy,这这不都是enjoy啊,人家这是定义的它哈,现在我们定义的叫at硅谷,那么就拿自定义的它在我们这个run progress当中去使用一下。
09:06
写到这啊,它冒号,嗯,然后呢,我们这里边用的叫round color,就这一共是七个嘛,那就一个个都写一写啊让color,嗯,我们改成是一个。灰色的啊,系统好像有这个。我们洗了。卖的不好。看一下这个color。微的。也太会了,嗯。这有点深。嗯,一共是有先把这三个整出来。刚才进度进度我们这里边用一个红的吧。
10:00
嗯,还有这个文本的一个颜色。原本的一个颜色用这个吧。或者觉得好看,你用它也行。行,这是三个颜色,然后接着。嗯,字体的一个大小。20嗯,我写写DB也行,其实啥爱在硅谷它的一个。嗯,还有那个叫什么呀,Round是。Max啊,这个一般的都是100啊,我们还写了100进度写了78。好看出来试一下,OK,这样的话呢,我们就把这个属性呢,做了一个应用,嗯,对应的就是我们这里边这个第三步。那做的事情啊,照着这个写就可以了,然后下边第四部分的话呢,应应该在我们的这个呃构造器当中,你得取出这些属性来给他去做一些呃调用啊。
11:00
啊行,这个呢就写好了,然后接下来呢,回到我们的这个round progress这个层面,那刚才我们定义了自定义属性啊,所以这些属性呢,我们就不要了。啊,相当于他呢,使用自定义属性去替代了啊。行,那替换以后的话呢,我们下边总归还是要用这些变量的啊,你用的时候呢,应该提前呢初始化出来,那提前初始化出来的话呢,我们像at ts啊,这里边儿就是是不是包含了我们所说的你这个声明的时候的这些属性啊。啊,那你应该在这里边呢,能够给它取出来哈,取出来的话呢,这几个都相互之间调用,那我就写到这个里边就行。啊,这个我们叫获取自定义的这些属性啊,那怎么去调。嗯,拿着我们这个contest,就这个参数点二,它有这个叫TE attributes。
12:05
啊,获取一下你声明这个style样式里边这些属性啊呃,这里边呢,我们发现它有好几个方法啊,这些里边大家调的时候呢,千万不要调错了啊嗯,有的同学可能调的时候呢,就是呃直接使用这个参数了,也就是呢,就光把我们这个叫2.stable。我们自己的啊,第二我们这个叫round progress。我把它调过来了,发现也没错,但真正运行的时候发现,嗯,都是使用的默认值,也就是都是用这里边生命的这些啊,还不如这里边生命就是你你默认生命的这个样式的啊。别用这个方法。啊,还有一个方法,前面呢,你得把这个传进来啊。这个一定要小心啊,之前有同学写的时候呢,就经常把这个给丢了啊,因为你现在获取的时候呢,要把从这里边把那些自定义的这个取出来啊,所以不要把这个丢了。
13:03
然后。要生成这样的一个呃样式。然后它这个结构的话呢,最后一定要记着给它做一个recyle啊,做一个回收处理。所以先写上。啊,这是一个回收啊,这呢是相当于是获取他这个叫type的对象啊。哎,这个type的对象里边呢,就包含了我们的这些自定义属性,这是第一步,这是第三步啊,下边我们看这个第二步。第二步呢,就相当于是呃,取出。哎,取出所有的自定义的这个属性。啊,去除啊,那怎么去取啊,Ta和RA拿着它呢,我们去做一个get啊get呢,我们一共是有七个,那就按照顺序一个一个来,首先呢是几个颜色哈,看color color那就是啊二点啊这个stable。
14:03
点round找。啊,那就让到color,哎,这是第一个啊,然后呢去找那有可能找不到,所以呢,第二个参数,他说你要万一找不到的话呢,你给我一个默认值。啊,这呢,我们就自己去定一个就行啊,比如color.GR啊,直接用这个。那类似的话呢,我们这哎,先把这几个颜色整过来。Progress。这个color,这个改成是一个还是一个red吧。Color啊,这个写,比如个绿色green这样。接着去。点get,嗯,Get着这个尺寸了啊叫dimension。点二,嗯,我们这个叫round。哎,这个呢,我们就UI4点啊。
15:02
嗯,他这个是。Test的一个赛。20。嗯,再来。Get一下它的这个。2.round。嗯。这我还写成100了。哎,Round这是一个progress,最后改成一个四十三十吧,这样啊,哎,正常来讲是不会取到这些默认值的,如果能找到这些变量的话啊,那如果你这个位置少写了这个at r s,这就都取这个值了。啊,意味着个我们就没找到,所以呢,这个变量一定别忘了去丢了啊,这个我们调的是两个参数的辅导这个方法啊。
16:05
直接射门是什么意思?是用后边的模值,它不是这个意思啊,就是它就跟我们当时用那个SP存储一样,SP存储的时候,你取一个,我们用它呢去get一个,比如string获取一个字符串的时候呢,不是也得取出那一个K,然后呢,如果找不到给一个,他这是一个就是保险的一个处理,其实按正常来讲,这个呢,其实是你不需要考虑的。对吧,这个呢,我们就是从这个布局当中去找到,按说实际上是可以没有,但是他为了保证你这个程序呢,是能够正常走的,万一要找不到怎么办呢?那你可以设置个默认值,你不能拿这个值去呃去设置它了啊,那你这个自定义属性不就没有意义了吗?自定义属性不就是想在布局文件当中去用吗?在这指定,那你又跑这指定了,那你要自定义属性不就没意义了,那不什么要跟上面一样吗?行,这个呢,我们整个就做一个回收,回收以后的话呢,嗯,你这个get完了以后,这下边还还是没有的,所以这呢,我们应该是这样的哈,就是上面这个声明呢,还正常有CTRLC一下。
17:14
嗯,还拿过来把这个呢,我们也打开。然后这些值呢,这都不要了啊。哎,这个值就这就是相当于注销了啊,这是我们叫自定义属性的一个声明。嗯,这这其实声明只是说呢,你回头拿自己属性去触始化啊,使用自定义。属性来初始化。哎,如下的变量,嗯,那相当于这里边这几个CRLC,我得这一个一个这样去赋值了啊,拿着它去赋的值。嗯,然后这个。
18:13
Round one啊,这个里边呢,我们是叫dimension dimension得到的它是尺寸是吧,那放的一个float,那这个round was,我们这改一下吧。嗯,这个呢,是不是也一样啊。保存一下啊行,这个呢,我们就搞定了啊,哎整个这个思路的话呢,就是我们说哎拿呃,就这也是因为我们后边这个画的时候要用啊,哎我们就是拿自定义的这些属性,哎如果你确实声明过了,那就有有的时候呢,我们就这样去处理啊,你像里边呢,我们比如说当时用的这个叫像test view啊。
19:07
比如我们像这个叫test view,那有的时候比如说我们昨天讲的时候,我们就没有在这里边是不是指明它的一个text color。哎,没有指明t color,那系统呢,它在取的时候呢,它试图去找你这个t color没找到,没找到的话呢,我们发现activity跟application是不是处理方式不一样。还记得吧啊,一个是灰色的,一个是是那个就特别灰的啊,一个是黑色的啊,就相当于是在application的构造器中,或者是这个activity的构造器当中,他在试图去呃,使用我们具体的这些组件的时候呢,他当时负责这个默认值是不是就不太一样了。那就成这样意思了啊,就是虽然你在这边没有设置过TU的一个颜色啊,默认有一个颜色是因为它就用了默认值啊。行啊,这后边报个错。啊,那这呢,我们需要写成改成是一个float。
20:01
啊,因为我这都用的是float的啊。嗯,行,那就没啥了啊,跑一下走啊,这时候呢,你看这个我们刚才那会是60%,现在呢,我在这个布局文件中,这声明的是一个百分之。70我们看是不是70,你就知道是不是用自己的。这这就这样了是吧,我们这个因为用的是这个颜色了啊。就这样,其实这个颜色呢,应该稍微淡一点啊,因为你要整的这个太炫的话呢,用户都不知道这个是70还是这个是70的。行,那这个呢,我们相当于就画好了啊,这是使用了自定义属性。
我来说两句