【问题标题】:How to combine an AnimationDrawable with another animation?如何将 AnimationDrawable 与另一个动画结合起来?
【发布时间】:2019-06-07 04:48:18
【问题描述】:

下面这2个动画可以合并吗?它有效,但必须单独调用它们似乎很奇怪(2 次调用 start())

    ImageView rocketImage = (ImageView) findViewById(R.id.rocket_image);
    rocketImage.setBackgroundResource(R.drawable.rocket_thrust);
    rocketAnimation = (AnimationDrawable) rocketImage.getBackground();

    rocketImage.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View view) {
        rocketAnimation.start();
        rocketImage.animate().x(100).y(100).withLayer().setDuration(500).start();
      }
  });

【问题讨论】:

  • 您的实际需求是什么?
  • 要求运行两个动画。对于大多数动画,我们可以使用AnimatorSet来组合几个,但是我不知道怎么给AnimatorSet添加一个AnimationDrawable

标签: android jquery-animate animationdrawable


【解决方案1】:

查看AnimatorSet 并使用函数playTogether。但是,正如您在 cmets 中提到的,AnimationDrawableAnimatorSet 不兼容。在这种情况下,为了确保两个动画一起开始,你可以这样写

AnimationDrawable rocketAnimation = (AnimationDrawable) rocketImage.getBackground();

rocketImage.setOnClickListener(new View.OnClickListener() {
  @Override
  public void onClick(View view) {
    rocketImage.animate().x(100).y(100).withLayer().setDuration(500).setListener(new Animator.AnimatorListener() {
        @Override
        public void onAnimationStart(Animator animation) {
            rocketAnimation.start();
        }

        @Override
        public void onAnimationEnd(Animator animation) {

        }

        @Override
        public void onAnimationCancel(Animator animation) {

        }

        @Override
        public void onAnimationRepeat(Animator animation) {

        }
    }).start();
  }

});

【讨论】:

  • 好的,那么请写下代码?因为当我尝试将 AnimationDrawable 添加到 AnimatorSet 时,它说它与 Animator 不兼容
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-10-23
  • 2016-06-23
  • 2018-10-13
  • 2013-06-03
  • 2012-11-19
  • 2023-03-28
  • 2021-09-28
相关资源
最近更新 更多