在View上调用clearAnimation()时,动画转换不会在View上持续存在

时间:2019-02-15 08:56:23

标签: java android animation kotlin

我正在为音乐播放器应用在圆形视图上应用无限重复计数旋转动画。

当我在视图上开始动画时(即,按音乐上的播放按钮),视图将完美地无限旋转。

您可以在此处查看视图的预览图像:

https://3.bp.blogspot.com/-yYnCxksY8IQ/WxAaHcxcA7I/AAAAAAAAAtI/i86w09gbXhIC4LpKknWFbvXgrBwTjr8ugCLcBGAs/s1600/Screenshot_2018-05-31-20-44-26-684.jpeg

https://1.bp.blogspot.com/-C-SR7dsZwKc/WxAaJxRcWXI/AAAAAAAAAtU/K5_U52DVWcwaYkeTdvptoM-lUApliNKKgCLcBGAs/s1600/Screenshot_2018-05-31-20-44-45-739.jpeg

问题在于,当我调用clearAnimation()[以在单击暂停音乐按钮时停止动画]时,视图会完全转换为初始状态,看起来不太好。

我希望视图一直保持与旋转相同的角度,直到单击暂停按钮为止。例如,当我单击“播放”时,动画将视图旋转到30度,然后按“暂停”,视图应在该30度位置停止。

文件:

旋转文件:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" android:fillAfter="true">
<rotate
    android:duration="5000"
    android:fromDegrees="0"
    android:pivotX="50%"
    android:pivotY="50%"
    android:repeatCount="infinite"
    android:startOffset="0"
    android:toDegrees="360" />
</set>

清除动画:

private fun stopDiskAnimation() {
    v.rotate_view_album_art.clearAnimation()
}

1 个答案:

答案 0 :(得分:0)

Animator应该为您提供帮助

val animator = ObjectAnimator.ofFloat(yourView, "rotation", 0f, 360f).apply {
    duration = 5000
    repeatCount = ObjectAnimator.INFINITE
    start()
}
// ...
animator.pause()

资源:

http://cogitolearning.co.uk/2014/01/android-property-animations-controlling-animation-flow/