十三年专注于网站建设与互联网应用开发,低调、有情怀的网络应用服务商!
南昌百恒科技微信公众号 扫一扫关注
tel-icon全国服务热线:400-680-9298,0791-88117053
扫一扫关注百恒科技微信公众号

安卓开发之播放多个动画详解

百恒网络 2018-12-14 16:28:38 2669
       有时候,在南昌APP开发项目中需要同时执行一些动画。其实这很简单,同时调用start()方法就行了。

       但是,如果要像编排舞步那样编排多个动画的执行,事情就没那么简单了。例如,为实现完整的日落景象,太阳落下去之后,天空应该从橘黄色再转为午夜蓝。我们可以使用AnimatorListener,AnimatorListener会让你知道动画什么时候结束。这样,执行完第一个动画,我们就可以接力执行第二个夜空变化的动画。

       然而,理论分析很简单,实际去做的话,少不了要准备多个监ting器,这也很麻烦。好在Android还设计了方便又简单的AnimatorSet。下面百恒网络就来带大家了解一下。

       首先,如下代码清单所示,删除掉原来的动画启动代码,并添加夜空变化的动画代码。

       创建夜空动画(SunsetFragment.java)
       private void startAnimation() {
       ...
       sunsetSkyAnimator.setEvaluator(new ArgbEvaluator());
       ObjectAnimator nightSkyAnimator = ObjectAnimator
       .ofInt(mSkyView, "backgroundColor", mSunsetSkyColor, mNightSkyColor)
       .setDuration(1500);
       nightSkyAnimator.setEvaluator(new ArgbEvaluator());
       heightAnimator.start();
       sunsetSkyAnimator.start();
       }

       然后,创建并执行一个动画集,如下代码清单所示。

       创建动画集(SunsetFragment.java)
       private void startAnimation() {
       ...
       ObjectAnimator nightSkyAnimator = ObjectAnimator
       .ofInt(mSkyView, "backgroundColor", mSunsetSkyColor, mNightSkyColor)
       .setDuration(1500);
       nightSkyAnimator.setEvaluator(new ArgbEvaluator());
       AnimatorSet animatorSet = new AnimatorSet();
       animatorSet
       .play(heightAnimator)
       .with(sunsetSkyAnimator)
       .before(nightSkyAnimator);
       animatorSet.start();
       }

       说白了,AnimatorSet就是可以放在一起执行的动画集。可以用好几种方式创建动画集,但使用上述代码中的play(Animator)方法更容易。

       调用play(Animator)方法之前,要先创建一个AnimatorSet.Builder对象,然后利用它创建链式方法调用。传入play(Animator)方法的Animator是链首。所以,以上代码中的链式调用就可以这样解读:协同执行heightAnimator和sunsetSkyAnimator动画;在nightSkyAnimator之前执行heightAnimator动画。在实际南昌APP开发中,可能会用到更复杂的动画集。这也没问题,需要的话,可以多次调用play(Animator)方法。

       再次运行Sunset应用,就可以欣赏这美丽的动画了。
400-680-9298,0791-88117053
扫一扫关注百恒网络微信公众号

欢迎您的光顾,我们将竭诚为您服务×

售前咨询 售前咨询
 
售前咨询 售前咨询
 
售前咨询 售前咨询
 
售前咨询 售前咨询
 
售前咨询 售前咨询
 
售后服务 售后服务
 
备案专线 备案专线
 
售后服务 售后服务
 
×