为了账号安全,请及时绑定邮箱和手机立即绑定

如何链接 rotationAnimation?

如何链接 rotationAnimation?

凤凰求蛊 2023-04-19 17:04:06
我想旋转一个 ImageView。但我想从 0 旋转到 45 到 -45,然后返回 0 来总结我的目标。我尝试创建 4rotationAnimation并将它们与AnimatorSet.这是我的代码:    rotate = new RotateAnimation(0, 45, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);    rotate.setDuration(1000);    rotate.setInterpolator(new LinearInterpolator());    rotate1 = new RotateAnimation(45, -45, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);    rotate1.setDuration(1000);    rotate1.setInterpolator(new LinearInterpolator());    rotate2 = new RotateAnimation(-45, 45, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);    rotate2.setDuration(1000);    rotate2.setInterpolator(new LinearInterpolator());    rotate3 = new RotateAnimation(45, 0, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);    rotate3.setDuration(1000);    rotate3.setInterpolator(new LinearInterpolator());    setAnim= new AnimationSet(true);    setAnim.addAnimation(rotate);    setAnim.addAnimation(rotate1);    setAnim.addAnimation(rotate2);    setAnim.addAnimation(rotate3);img.startAnimation(setAnim);目前图像突然没有旋转到 45° 并返回到 0°。
查看完整描述

2 回答

?
青春有我

TA贡献1784条经验 获得超8个赞

您可以使用AnimationListener


例子


yourFirstAnim.setAnimationListener(new AnimationListener() {


    @Override

    public void onAnimationStart(Animation animation) {

    }


    @Override

    public void onAnimationRepeat(Animation animation) {

    }


    @Override

    public void onAnimationEnd(Animation animation) {

      doYourNextAnim()

    }

  });

或者更简单的方法,使用AnimatorSet()


AnimatorSet as = new AnimatorSet();

as.playSequentially(yourFirstAnim, 

                    yourSecondAnim,

                    ..,

                    ...);

as.setDuration(YOUR_DURATION);

as.start();

更新 为了避免回调地狱,我们可以使用StartDelay


imgAvatar1.animate()

        .alpha(1f)

        .setDuration(YOUR_DURATION)

        .start()


    imgAvatar2.animate()

        .alpha(1f)

        .setStartDelay(YOUR_DURATION * 1)

        .setDuration(YOUR_DURATION)

        .start() 


    imgAvatar3.animate()

        .alpha(1f)

        .setStartDelay(YOUR_DURATION * 2)

        .setDuration(YOUR_DURATION)

        .start() 


查看完整回答
反对 回复 2023-04-19
?
月关宝盒

TA贡献1772条经验 获得超5个赞

您正在使用您的AnimationSet().

问题可能出在参数上fillAfter

setFillAfter(true)在你的动画上使用rotate,所以动画参数在动画之后应用。


查看完整回答
反对 回复 2023-04-19
  • 2 回答
  • 0 关注
  • 89 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信