【问题标题】:Android animation rotate infinite, without pausingAndroid动画无限旋转,不暂停
【发布时间】: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)

感谢您的帮助! :)

【问题讨论】:

    标签: android android-studio animation rotation infinite


    【解决方案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 代码就可以正常工作。
    猜你喜欢
    • 1970-01-01
    • 2016-11-23
    • 1970-01-01
    • 2022-01-05
    • 1970-01-01
    • 1970-01-01
    • 2012-04-08
    相关资源
    最近更新 更多