Я применяю анимацию вращения с бесконечным числом повторов на круговом изображении для своего приложения музыкального проигрывателя.
Когда я запускаю анимацию на виде [то есть нажимаю кнопку воспроизведения на музыке], вид безупречно вращается бесконечно.
Вы можете просмотреть изображения предварительного просмотра здесь:
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() }
Animator должен помочь вам
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/