Анимационный набор, эффект встряхивания

Я пытаюсь встряхнуть анимацию своего взгляда, я пишу этот код, но мне кажется, что это можно сделать проще

var animatorSet = AnimatorSet() var objectRotateAnimator = ObjectAnimator.ofFloat(shake, "rotation", -5f, 5f) objectRotateAnimator.apply { repeatMode = ValueAnimator.REVERSE repeatCount = ValueAnimator.INFINITE duration = 70 interpolator = LinearInterpolator() } var objectTranslateAnimator = ObjectAnimator.ofFloat(shake, "translate", -5f, 5f) objectTranslateAnimator.apply { repeatMode = ValueAnimator.REVERSE repeatCount = ValueAnimator.INFINITE duration = 70 interpolator = LinearInterpolator() } start_shake.setOnClickListener { animatorSet.play(objectRotateAnimator).with(objectTranslateAnimator) animatorSet.start() } 

Как я могу сделать это проще?

Вы можете извлечь некоторые функции и поля, чтобы уменьшить дублирование:

 private val linearInterpolator = LinearInterpolator() private fun shakeAnimator(propertyName: String) = ObjectAnimator.ofFloat(shake, propertyName, -5f, 5f).apply { repeatMode = ValueAnimator.REVERSE repeatCount = ValueAnimator.INFINITE duration = 70 interpolator = linearInterpolator } 

Тогда это будет выглядеть так:

 start_shake.setOnClickListener { AnimatorSet().apply { play(shakeAnimator("rotation")).with(shakeAnimator("translate")) start() } } 

Хорошие имена методов устраняют необходимость в промежуточных переменных, которые еще больше сократили код.

Intereting Posts
Kotlin: получить ссылку на функцию экземпляра класса Получить функцию по имени динамически в Котлине Назначение и извлечение карты типов Что делает оверенность типа Котлина возможной, что невозможно в Java или Scala? Невозможно инициализировать парсер объектов для модели. Продукты, не найдены приемлемые конструкторы Частный конструктор в Котлине Повсюду в Котлине Накладные расходы расширения Kotlin для Android Kotlin lazy var throwing ClassCastException: kotlin.UNINITIALIZED_VALUE Какова наилучшая практика для создания настраиваемого компонента пользовательского интерфейса в tornadofx? В Kotlin, как передать параметр, чтобы асинхронная область сохранила его? Каков наилучший способ в kotlin для метода toString () для нулевого объекта возвращать пустую строку вместо "null" Можно ли компилировать код kotlin для запуска без runtime lib? Как? RXJava – concat не работает как реализовать java-интерфейс SAM в Котлине?