Установите интерполятор для Android Animations в Java
-
26-10-2019 - |
Вопрос
Это кажется очень простым: я пытаюсь установить интерполятор для использования для анимации в моем приложении. Мне нужно установить это в коде Java, а не XML (он изменится в соответствии с различными вещами).
На сайте Android я нашел setInterpolator()
Однако я не уверен, как использовать это.
Я пытался просто кормить в межполярном имени (т.е. BounceIterpolator
), но это ничего не сделало.
Я старался R.anim.BounceIterpolator
, но Intellisense сказал anim cannot be resolved or is not a field
.
Итак, как я могу установить интерполятор с Java?
Решение
setInterpolator(new BounceInterpolator());
Другие советы
anim.setInterpolator(context, android.R.anim.bounce_interpolator);
Обновлять:
Android теперь поддерживает настоящую весну и физику в анимации. Его часть обратной совместимой либера. Ссылка на сайт
Для пользовательских интерполяторов:
- Создайте пользовательскую кубическую кривую Безера, используя это Потрясающий сайт. Анкет И получить контрольные точки для кривой.
Interpolator customInterpolator = PathInterpolatorCompat.create(cpX1,cpX2,cpY1,cpY2)
- Добавьте этот CustomInterpolator в любую вашу анимацию.
Добавлено сутьАнкет Немного больше здесь.
Благодаря Амальбит Я написал интерполятор с PathInterpolator
для ProgressBar
в котлине.
val path = Path()
path.lineTo(0.1f, 0.2f)
path.lineTo(0.7f, 0.9f)
path.lineTo(1f, 1f)
val animation = ObjectAnimator.ofInt(progress_bar, "progress", 0, 100)
animation.duration = 2000
animation.interpolator = PathInterpolatorCompat.create(path)
animation.addListener(object : Animator.AnimatorListener {
override fun onAnimationStart(animator: Animator) {}
override fun onAnimationEnd(animator: Animator) {
finish()
}
override fun onAnimationCancel(animator: Animator) {}
override fun onAnimationRepeat(animator: Animator) {}
})
animation.start()
Смотрите больше примеров на https://www.programcreek.com/java-api-examples/index.php?api=android.view.animation.pathinterpolator.