00:00
行,那下面来看一下这个action up,我们应该怎么去做。嗯,这个我们刚才那会儿也可以看一下,我们不是打印了一下,你这个是不是高啊。哎,看一下啊,我们这里边呢,你看这个child就是我们所说的这个里边这个红色的这个高度啊,红色这个高度是2091,然后呢,我们这个sc view是1912。来看出这样的一个值的差别啊,这两个差呢,就是我们这里边这个高度差啊,行行,那这个up该怎么做呀。我一下开的时候呢,应该回去是吧,回到哪是不是就回到normal木,你所记录的这个临界状态啊,而且这个回去不能是瞬间一下子回去啊,你不能重新我再定位一下,是不是应该慢慢慢慢回去,那应该是不是应该动画呀。使用平移动画。嗯,别的话又一个,嗯,Translate animation看参数参数呢好几个,那我们用哪个呢。
01:06
你第二个吧。第二的话呢,我们看一下这个X轴X轴的变化,X轴没动过是吧。嗯,那外轴。嗯,Y轴这个应该怎么写。哎,这也是我们这里边的一个难点啊,Y轴如果这些个零,这些零其实没事,因为你这个平移是不是所有的点都动啊,哎,那我们这就看一下啊,嗯,Y轴这针动多少啊啊,比如到这了,到这的时候呢,我现在一撒开啊,那就应该是移动是不是这么个距离。对吧,这个距离怎么去描述。嗯,我是不是可以获取下它的这个点的坐标。然后这个位置呢,是不是就是你这个normal里边定义的那个包的位置,它俩这个差值是不是就行。对吧。嗯,那我们这样看怎么去写。嗯,我们当前你这个child view,它有一个get一个。
02:04
嗯,它的这个bottom是吧,嗯,这个值,嗯,如果我让他去减去啊,减去我们这个normal的一个bottom。哎,它呢,得到了一个变量。啊,这个变量呢,我定义成。嗯,我们这应该是平移的一个距离了哈,穿啊雷它的Y轴方向要移动的距离,那这个距离你看一下哈,在我们的这种情况下,这是正的指数的呀。真的复杂。负的吧,你不是拿这个红的这个Y坐标减去它的Y坐标吗?是不是负的呀?啊,那就是意味着这个值现在是个负的是吧?那我现在translate的时候做一个平移,那你平移我这一撒开是不是要希望它往下平移啊,那往下平你需要正的还是负的?
03:00
往下移。这样的吧,所以刚才这个值应该取一个是不是那个相反数啊,那或者你就让那个反着减也行啊,或者我这我这就写个负的吧。这不就可以了,哎,这就是你要移动的这样的一个范围啊,穿刺给它这个每一个位置都得非常小心啊,自定义空间就是这样的特点,嗯,至少你得下一个duration啊,两秒钟吧。行,两秒钟呢,让它还原回去,那你是作用在我们这个child view上的啊,去做一个start,一个animation啊,Translate。在那边是。嗯,这样做一个。本是正上,嗯,你没事吧。哎,这样就可以了,启动的话。啊嗯,这样写看看效果啊。
04:10
看这呢,能不能这时候已经达到我们的一个需求了。啊,就这么着了啊,我现在往下转。做完以后呢,我撒开。诶,看出区别了吗?两秒钟时间,首先有点长了啊,我们可以改一改,然后的话呢,就是往下转完以后,你看啊,转完以后我一撒开回去了。然后呢,哎,得又回来。为什么又回来了,先把这个动一下吧,这个有点太慢了啊,你这个时候呢,正常情况下我们说这个动画是不是完事以后他都就还原了,所以呢,有同学可能会想,哎,那我应该是这么着,叫塞一个feel after啊,改这个to就是停留在最终位置上。啊,停留。在最终位置上。
05:01
这个理解是吧,就是动画我们不是执行完以后呢,它就是你从这让它移到这,移完以后你要没有这个设置,它是不是就回去了,哎,是这样的啊,但是这样写好不好。这个确实的话呢,就是我们,呃,这个你动完以后呢,它就停留在最终位置上,但是这样写不对。为什么?还记不记得在自定义视图里边说过这个问题?就是哎,对属性动画那个是吧,哎,就是我这儿呢,有一个视图,我现在把它移动到这儿,如果这个视图本身上有个点击实践。啊,那移动过来以后呢,我让它停留在最终位置,但实际上你发现这个点击事件在哪呢。是不是还在这个位置上,哎,所以它是按照布局去确定的啊,还在这儿,所以呢,你这个时候呢,如果你只是说通过这种方式呢,呃,确实让它停留在最终位置上了,但是你要点那个按钮的话,那个按钮的那个,如果点击实验是不是还在原来那个位置上,那就乱套了啊,所以不能这样写。
06:00
啊,那不能这样写,那我们就得换一种方式那。那有时候用数字动画可以也可以啊,当然这样一整的话,那就得重新再去造这个了啊,那我们这呢,还可以这样启动动画之前,我们是不是还可以去设置动画的一个监听啊。哎,他呢?一个animation listener啊,你一个animation listener在这个监听里边,比如说你是不是到最后了啊,当你动话结束的时候呢,我们是是也只需要嗯,你你这时候你是已经到最终位置了,我让我们这个char view是不是我再重新给他做一个lay就行。就让它回到,就是相当于你不光让它移动到这儿了,让他整个这个布局是不是也跟着过来。这就可以了,就怎么写。到点做。有。这就可以了。
07:01
对吧,那这块你你要是说愿意再多一个操作,你还可以再加上个,比如说可这个ation也行啊,就相当于我这个时候呢,我就其实动画也结束了啊,但整个关于动画这个设置的话呢,我们也给它清掉啊,那你可以多这个其实嗯。不加的问题也不会特别大啊,清除动画相当于整个关于动画里边,我都这个参数设置呢,就都是闹了啊动啊。这个呢,就是一个重新的布局啊。重新布局的一个目的呢,或者一个想法就是为了避免就是像这样操作,导致那个点击事件之类的还在原来的位置上啊,你这一布局过来,这个都,哎,点击事件都跟着就过来了,行,这是这样子的,嗯,然后我们在这个基础之上还可以再加一个什么事呢,就是如果这个用户啊,这个我们到这儿了,我一擦开呢,就回去了,在这个往上回的过程当中。
08:02
有的有可能是回的过程当中,用户又又开始往下拽了。哎,我们这时候呢,就可以再优化一下,就是如果这个动画还在执行,我就不让用户转。对吧,那这个时候怎么做呢?我们可以在这儿再设置一个变量啊。Private类型的叫。叫is finish animation。嗯,默认的就是一个处啊。嗯。判断是否。啊,结束。啊,那结束了,或者是否动画结束。行,默认的是一个出。默认是个处,我们先CTRLC一下啊嗯,默认它是结束的,然后呢,应该是怎么着呢,当你动画刚开始的时候。嗯,那它其实就是这时候是不是应该改成个false啊。就相当我这时候没有结束。呃,当你这个呃,动画结束的时候呢,它是不是就改成了数。
09:03
这样啊,那你这个变量光是修改它的质量,你还没有用它,嗯在这块来用,比如说呢,一开始的时候,嗯,就是一上来啊,你如果没有此时图,那就直接休克了,那或者的话呢,是不是我们当前那个动画还没有结束啊。动画没有结束,那你这时候呢,就呃,我们就让他修出,就不让他是不是再往下拽。这样啊,所以这儿呢,我们。是不是应该加个肺呀?哎,这也叫动画结束,就是当你动画没结束的时候。那就是按期活来,就不要让他执行这个。对吧,好,还差一个东西。还差个什么呀?哎,这个还是有难度的啊,你看我们那个normal。Nono呢,是在你这种情况下,是不是MT的时候负过值啊,那我用户拽了一次回去了,我要再拽,再拽的时候,你这个MT好像还是一个空,还是一个非空的是吧,你是不是应该让他再还一种空的呀。
10:04
那这个还原真空的应该是在你动画结束以后吧。呃,动画结束以后,这个你写这也行啊,相当于呃,就是清空。啊,或者要你这个清除这个normal中的这个左上右下啊。那这个呢,就是点。嗯,下这样就可以了。那这样写完以后,是不是基本上还是感觉可以的呀。再跑一下。好,现在呢,就是这样的情况,然后现在往下拽啊,然后撒开。往下转。打开。哎,往上转打开。
我来说两句