00:00
嗯,行,这个完了以后的话呢,我们接着来看下边这个操作,我们下边呢,希望这个圆环呢,进度动起来。呃,言IG呢,我们希望在加载直接进入这个页面的时候呢,这个70%或者你百分之其他的啊,这个呢,是有一个这个动态效果,看着感觉更舒服一些,哎,我们下边得看怎么去做啊。呃,怎么去做的话呢,它有一个进度,然后这个进度是一点点点点动起来,我们要想让这个视图动起来。应该怎么个想法呀?相当于我们应该是不断的,是不是要重绘这个视图啊。啊,只有你不断重绘这个视图,它才能够有个动态的效果哈,呃,不断重绘,那你就意味着一开始,比如我进度是一,嗯,重绘了一下,你就画个一,呃,进度变成二呢,我再重复下进度变成二,所以这个进度应该是不断的试图去改变我们当前这个round的progress,哎,它里边的这个progress。
01:02
啊不断的去改它,那现在呢,我们设置成是70的,70是它的一个最大值,我们应该让它这个进度呢,从零开始一直呢涨到70,啊所以这些操作呢,就应该在我们的是我们对应的这个home fra里边去写了。啊,你现在不是在它里边要展现一个圆嘛,哎,你现在让它动起来,那不就应该在这里边去写这个逻辑,哎,我们这个圆形进度条这个类呢,写好了以后大家开发当中的时候呢,呃,大不了你就直接把我这个拿过去自己用呗。是吧,当然你用的时候呢,如果你要自定属属性来,你就是把它跟这个都得粘过去是吧,哎,两配合着去用就可以了,就用不上自己画了啊。行,嗯,那这里边儿呢,我们就下边让他去动起来哈,嗯,动起来呢是一个操作,另外的话呢,我们,嗯,在联网的时候呢,从服务器获取到这个数据里边。看一下我们当时拿到的这个文件。
02:00
哎,这个文件里边呢,这个里边有一个,呃,Progress是90,哎,这个90呢,应该用来更新我们刚才看到的界面当中的这个进度,所以我们应该是先修改一下当前这个进度值啊,那就意味着先回到我们这个代码层面。嗯,在这个位置的时候呢,我们加点布局,这个布局呢,刚才也指定了一个ID啊,回过来我们找到这个。加载布局这个位置。嗯,或者这个呢,你也可能有些变化,等等你大不了你就把它都删掉,重新的再去加载一下。是S。Confirm。啊行,有了以后呢,我们现在要用一下,刚才这里边的它是它。是。啊,CTRLC一下它呢,我们需要呢,在你联网获取数据以后啊,这是更新页面的数据啊,这呢我们也得是给他设置一下,嗯,它设置的话呢,它是一个round progress,我们应该是设置它的是一个progress啊。
03:00
啊,但是这个progress因为是你自定义的啊,我们在这里边没有给过他盖赛方法,所以我们给一下,不妨呢,我们就写到这吧。Gen写一个get set,我们需要用到的其实也就是关注一下最大值和这个。所以我就。给他俩改起方法啊行,学完以后呢,再回到这个层面,我们拿着这个run progress点去一个progress。哎,就拿我们刚才获取到的index里边的product里的progress。啊,做一个设置,这个设置的话呢,嗯,看一下啊。啊,这是一个润型的啊,那好吧。嗯,我就CTRL先这。第二,Pass in the,搞定了。相当于把这个词类型转换成一个int类型。行,这个进度呢,就已经改了啊,这个进度改了以后,我们这时候你要再跑,那这时候界面是不是就变了。
04:26
哎,这是90了嘛,行,这个呢,我们就改了啊嗯,改了以后呢,下面我们希望它动起来。嗯,动起来,动起来怎么做呀。在这写吧,嗯,不断的更新改变,或者这个呢,你像它是一个动态的效果,我们不可以在这里边,我们直接写个for循环的。就像我们当初讲安卓基础的时候,我们你这个进度条,这进度条你看到它一点点涨涨涨涨涨涨涨,这个你不能在我们这个主线程当中,是不是写这个涨啊。
05:00
那你会点击的时候,发现它一开始不动,然后一下子是不是就满了。哎,就成这样了啊,所以呢,我们这个操作应该放在一个是不分线程中啊,或者说呢,它就应该是一个执行时间比较长的操作了啊说在。分线程中,然后呢,实现呃,进度的一个动态变化啊。嗯,那我这我就直接亮吧,自己去用一个thread,这是其中一种方式哈,我们还有这个。这个开启一个线程的方式,这里边我去提供一个re,是吧。这样写一下吧,嗯,然后呢,我们定一个变量吧。就是要不代码写这看的有点多了啊,我就写到这,在这呢,我们用一个randomable。啊,在这里边去写。写这个逻辑的话呢,我们应该是先设置一下你当前的呃,Round。啊,Progress这个home,设置一下它的这个max值啊,这max值其实就就是100哈,我们这个。
06:06
数据里边。嗯,他这个没有设置过100,那就默认就是100,所以我们这儿呢,还写下100,但其实我们本身写的就是100啊,以防万一这块你再重新设置一下。然后当前这个run progress,它的一个process啊,我们当前在这已经设置过了。啊,这事过了,那这时候就就不用管了哈,这是它的一个。诶,不对。我们应该这样子啊嗯,S max是100啊,就就这样写就可以啊,那我们接下来呢,是这样。嗯。我只需要让他是不是到90啊。到90还得这样动一下。啊,这个。CTRLX拿出来。单独的在这我先声明一下。
07:03
那这个呢,我们起个名字叫current。Progress。这样啊,然后这个current progress呢,抽取为一个属性。啊抽出去呃,然后呢,把这个呢,设置成我们这个显示一下,其实这个呢,你现在设置一下,应该说在这设置没啥意义了。能理解吧?呃,它最大到90,你上来设乘90,是不是回头马上又从零开始了,所以这就不要在这写了啊,这个光这样一下,嗯,也仅仅是获取了当前的这样的一个进度值啊。啊,获取这个数据中的啊进度值。哎,也仅仅是这样的操作而已,然后呢,这个值我们抽取为一个属性放在这儿了,这个值呢,在下边一一联网90啊在这里边我们具体去写,写个化循环。I等于零,然后I呢,小于是不是这个就是啊这样啊进来,然后在这里边呢,我们不断的去设置一下我们这个round。
08:10
它的一个。让这阵就写成I吧。写成I不对,加个一吧。对吧,嗯,一共循环了这么多次,循环了90次,然后呢,第一次循环的时候呢,进度是一嘛,最后一次循环进度是90嘛。嗯,这样啊,嗯,这个呢,速度不要太快了。嗯,我们这里边可以来一个system clock点来做一个,嗯。九十九十来个十,就是不到一秒钟。20。将近两秒钟,行,那我就写个他哈,就是做一个延迟的一个操作,别太快了,嗯,同时的话呢,我们还差个什么呀。是不是叫强制重汇啊?
09:02
哎,你光设置这个progress,你得让他这个圆形镜条是不是再重绘一下,这样的话它才能够动起来啊,强势重绘怎写。呃,有两个方法,一个呢叫呃,Invalid是吧,这个怎么调啊。In va data。这样不行是吧,怎么调?啊,使用那个run,它点引外的。啊,一个视图可以是重绘,是这样写哈,这个写法跟这个写法有什么区别。还记得吧?中午的时候呢,分享的同学把这个事儿呢,得说清楚是吧。这个呢叫强势重汇,只有主线正中。才可以如此调用。啊,就是主线程里边呢,强制重汇这样写它呢。
10:04
分线程里边就可以,或者主线程也行,因为它这个post相当于把它呢发到主线程中了啊,所以说这个呢,呃,主线程分线程都可以如此调用。哎,都可以如此调用啊,所以说这个呢,就更通用一些啊,把这个注释一下。来运行。嗯,我我这上面手机上看的话不卡,但是在这个传输的时候看上去稍微有点卡。
11:01
嗯,这个呢,其实没啥问题哈,就这就是我们让它整个一个动态显示的一个效果。那就这样来做就行啊。
我来说两句