Низкая производительность анимации параметров макета в Android

В настоящее время я анимация ширины объекта со следующим кодом:

val animation = ValueAnimator.ofInt(layoutParams.width, value) .setDuration(duration) animation.interpolator = interpolator ?: LinearInterpolator() animation.start() animation.addUpdateListener { val animatedValue = it.animatedValue as Int layoutParams.width = animatedValue requestLayout() } animation.addListener(object: Animator.AnimatorListener { override fun onAnimationRepeat(p0: Animator?) {} override fun onAnimationEnd(p0: Animator?) { endHandler?.invoke() } override fun onAnimationCancel(p0: Animator?) {} override fun onAnimationStart(p0: Animator?) {} }) 

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

Я задал этот вопрос на GDD 2017 в Кракове в «Часы работы офиса», и они сказали мне посмотреть приложение Nick Butcher -> Plaid.io. Конечно, стоит проверить, интересны ли вы в анимации Android.

Ссылка здесь:

https://github.com/nickbutcher/plaid

Мы сделали это, и мы увидели, что он часто использует

 animation.willChangeBounds = true 

и это укрепило нашу проблему с лагиными анимациями <3

Используйте метод animation.setTarget(viewToAnimate) для анимации целевого представления.

Я не проверял его, дайте мне знать, что это работает или нет.

Надеюсь, поможет.