我有一个关于Android的ObjectAnimator的问题。我正在尝试模拟反弹效果,即视图向上滑动(减小Y值),然后再向下同样的距离'n',紧接着视图再次向上下滑动,但这次距离是'n/2'(半个距离)。
因此,先是一个大的反弹,然后是一个更浅的反弹 - 即当Mac图标在托盘中想要引起您的注意时的情况。
这是我目前尝试过的代码(假设`v`是一个`View`):
因此,先是一个大的反弹,然后是一个更浅的反弹 - 即当Mac图标在托盘中想要引起您的注意时的情况。
这是我目前尝试过的代码(假设`v`是一个`View`):
float y = v.getTranslationY(),distance = 20F;
AnimatorSet s = new AnimatorSet();
s.play(ObjectAnimator.ofFloat(v, "translationY", y- distance).setDuration(500))
.before(ObjectAnimator.ofFloat(v, "translationY", y).setDuration(500))
.before(ObjectAnimator.ofFloat(v, "translationY", y- (distance/2)).setDuration(500))
.before(ObjectAnimator.ofFloat(v, "translationY", y).setDuration(500));
s.start();
请忽略代码质量,这只是一个概念验证!我希望它能够工作,但似乎只会“弹跳”一次,好像已经合并了动画,尽管使用了 .before()
。
您能否告诉我如何创建不会合并成一个的复杂 AnimatorSet 链?因为我觉得可能漏掉了某些东西。
BONUS:额外加分,如何设置 AnimatorSet 的重复次数?
非常感谢!