百恒网络
安卓开发之播放多个动画详解
  • 百恒服务
  • APP开发
  • 网页案例
  • 网页知识
  • 关于我们
  • 联系我们
  • 安卓开发之播放多个动画详解

    2018-12-14 16:28:38 2954
           有时候,在南昌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应用,就可以欣赏这美丽的动画了。
    展开分享
    服务
    案例
    首页
    动态
    联系
    咨询