这看起来非常简单:我正在尝试将插值器设置为在我的App中用于动画。我需要在Java代码中设置它,而不是XML(它将根据各种不同而改变)。
在Android网站上,我找到了setInterpolator()
但是,我不知道如何使用它。
我试过加入极谱名称(即BounceIterpolator
),但这没有做任何事情。
我尝试了R.anim.BounceIterpolator
,但Intellisense说anim cannot be resolved or is not a field
。
那么如何从Java设置插值器?
答案 0 :(得分:81)
setInterpolator(new BounceInterpolator());
答案 1 :(得分:14)
anim.setInterpolator(context, android.R.anim.bounce_interpolator);
答案 2 :(得分:9)
Android现在支持动画中的真实弹簧和物理。它是向后兼容的lib的一部分。 Link
对于自定义插补器:
Interpolator customInterpolator = PathInterpolatorCompat.create(cpX1,cpX2,cpY1,cpY2)
答案 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上查看更多示例。