Android动画无限旋转,不暂停

Posted

技术标签:

【中文标题】Android动画无限旋转,不暂停【英文标题】:Android animation rotate infinite, without pausing 【发布时间】:2022-01-21 18:39:28 【问题描述】:

我可以无限旋转我的图像。但我的问题是图像在达到 360º 时会很快暂停,然后再次开始旋转。即使我应用了“linear_interpolator”,它也会发生同样的情况。 我想要做的是图像在下一轮开始时根本不会暂停。所以它必须在任意角度以相同的速度无限旋转。

这是我的 - 代码。谢谢

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<rotate
    android:interpolator="@android:anim/linear_interpolator"
    android:duration="1400"
    android:pivotX="50%"
    android:pivotY="50%"
    android:fromDegrees="0"
    android:toDegrees="360"
    android:repeatMode="restart"
    android:repeatCount="infinite" />
</set>

我如何在我的代码中调用它

    rotate= AnimationUtils.loadAnimation(context, R.anim.loop_rotate)
    binding.imgSecondLayout.startAnimation(rotate)

感谢您的帮助! :)

【问题讨论】:

【参考方案1】:

animation.setRepeatCount(Animation.INFINITE) 添加到调用动画的 java 类中。

这里给出了我的最终代码:

Animation animation = AnimationUtils.loadAnimation(getBaseContext(), R.anim.loop_rotate);
animation.setInterpolator(new LinearInterpolator());
animation.setRepeatCount(Animation.INFINITE);
animation.setDuration(1400);
youractivity.startAnimation(animation);

【讨论】:

非常感谢您分享您的代码!我把它应用在我的身上,它终于起作用了!这真的让我很开心!谢谢 乐于助人 ☺️ 那么,再次以编程方式设置属性?? @DrHowdyDoo 是的,它有效,我也用问题中给出的代码尝试了它 @Sayooj 我刚刚做了!【参考方案2】:

这是由于动画完成其持续时间后的小延迟(在您的情况下为 1400 毫秒)。您可以消除此延迟以获得流畅的动画效果。

删除 repeatMode 属性并添加此行:

android:startOffset="0"  //Delay in milliseconds before the animation runs

动画会很流畅,没有任何延迟

【讨论】:

这个解决方案对我不起作用,但我现在已经解决了。非常感谢! @Lucy 那么是什么导致了问题?? 不清楚....我在我的 XML 上应用了 android:startOffset="0" 和 linearInterpolator ,然后在这里发布问题,但没有成功。当我在代码文件上写 linearInterpolator 时,我终于可以做到了。 奇怪,我不需要以编程方式设置任何属性,我的只需 xml 代码就可以正常工作。

以上是关于Android动画无限旋转,不暂停的主要内容,如果未能解决你的问题,请参考以下文章

如何暂停和恢复动画?

Android:如何停止在 ImageView 上应用的无限动画?

css3 实现动画效果,怎样使他无限循环动下去?

如何写一个可以永远无限旋转的imageview控件

如何写一个可以永远无限旋转的imageview控件

Android动画总结