Установите интерполятор для анимации Android в Java - PullRequest
36 голосов
/ 16 февраля 2012

Это кажется очень простым: я пытаюсь установить интерполятор, который будет использоваться для анимации в моем приложении. Мне нужно установить это в коде Java, а не в XML (он будет меняться в зависимости от различных вещей).

С сайта Android я нашел setInterpolator()

Однако я не уверен, как это использовать.

Я пытался просто ввести межполярное имя (т.е. BounceIterpolator), но это ничего не сделало.

Я пытался R.anim.BounceIterpolator, но Intellisense сказал anim cannot be resolved or is not a field.

Так как я могу установить интерполятор из Java?

Ответы [ 4 ]

81 голосов
/ 16 февраля 2012
setInterpolator(new BounceInterpolator());
14 голосов
/ 29 октября 2013
anim.setInterpolator(context, android.R.anim.bounce_interpolator);
9 голосов
/ 24 августа 2016

Обновление:

Android теперь поддерживает реальную весну и физику в анимации. Это часть обратно совместимой библиотеки. Link

Для пользовательских интерполяторов:

  1. Создайте пользовательскую кривую кубического Безье, используя этот потрясающий сайт . И получите контрольные точки для кривой.
  2. Interpolator customInterpolator = PathInterpolatorCompat.create(cpX1,cpX2,cpY1,cpY2)
  3. Добавьте этот пользовательский интерполятор к любой вашей анимации.

Добавлен гист . Некоторые больше здесь .

0 голосов
/ 28 сентября 2018

Благодаря amalBit я написал интерполятор с 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.

...