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

在Java中为android动画设置插值器,java,android,android-animation,Java,Android,Android Animation,这看起来很简单:我正在尝试在我的应用程序中设置用于动画的插值器。我需要在Java代码中设置,而不是在XML中设置(它会根据各种情况而变化) 在android网站上,我找到了setInterpolator() 然而,我不知道如何使用这个 我试着只输入interpolar名称(即,BounceInterpolator),但没有任何效果 我尝试了R.anim.BounceIterpolator,但Intellisense说anim无法解析或不是字段 那么如何从Java设置插值器呢?更新: setInt

这看起来很简单:我正在尝试在我的应用程序中设置用于动画的插值器。我需要在Java代码中设置,而不是在XML中设置(它会根据各种情况而变化)

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

然而,我不知道如何使用这个

我试着只输入interpolar名称(即,
BounceInterpolator
),但没有任何效果

我尝试了
R.anim.BounceIterpolator
,但Intellisense说
anim无法解析或不是字段

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

更新:
setInterpolator(new BounceInterpolator());
Android现在支持动画中的真实spring和物理。它是向后兼容库的一部分

对于自定义插值器:

  • 使用此选项创建自定义三次贝塞尔曲线。并获得曲线的控制点
  • Interpolator customInterpolator=PathInterpolatorCompat.create(cpX1、cpX2、cpY1、cpY2)
  • 将此自定义插值器添加到任何动画中
  • 增加了一个。 一些。

    多亏了我在Kotlin中为
    ProgressBar
    编写了一个带有
    PathInterpolator
    的插值器

    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()
    

    有关更多示例,请参见。

    Wow。我在整个互联网上搜索这个答案。非常感谢。
    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()