在Java中为android动画设置插值器

时间:2012-02-16 13:25:58

标签: java android android-animation

这看起来非常简单:我正在尝试将插值器设置为在我的App中用于动画。我需要在Java代码中设置它,而不是XML(它将根据各种不同而改变)。

在Android网站上,我找到了setInterpolator()

但是,我不知道如何使用它。

我试过加入极谱名称(即BounceIterpolator),但这没有做任何事情。

我尝试了R.anim.BounceIterpolator,但Intellisense说anim cannot be resolved or is not a field

那么如何从Java设置插值器?

4 个答案:

答案 0 :(得分:81)

setInterpolator(new BounceInterpolator());

答案 1 :(得分:14)

anim.setInterpolator(context, android.R.anim.bounce_interpolator);

答案 2 :(得分:9)

<强>更新

Android现在支持动画中的真实弹簧和物理。它是向后兼容的lib的一部分。 Link

对于自定义插补器:

  1. 使用此awesome site创建自定义三次贝塞尔曲线。并获得曲线的控制点。
  2. Interpolator customInterpolator = PathInterpolatorCompat.create(cpX1,cpX2,cpY1,cpY2)
  3. 将此customInterpolator添加到任何动画中。
  4. 添加了gist。 一些more here

答案 3 :(得分:0)

由于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上查看更多示例。