我有一個關於Android中的ObjectAnimator的問題。我試圖模擬一個彈跳效果,使View向上滑動(減小Y值),然後向後滑動相同的量'n',接着View再次上下滑動,但這次是'n/2'(so距離的一半)。Android - AnimatorSet,Object Animator - 反彈動畫鏈合併?
所以一個更大的反彈,然後是更淺的反彈 - 也就是說,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();
忽略了代碼質量,這是一個POC!我希望這可以起作用,但它似乎只是'反彈'一次,就好像它結合了動畫,儘管使用了.before()
。
你能告訴我如何創建複雜的AnimatorSet鏈,不合併到一個,因爲我似乎失去了一些東西?
獎勵:要獲得額外的積分,如何設置AnimatorSet的重複次數?
非常感謝!
使用http://www.jefflinwood.com/2013/04/repeating-android-animations-with-animatorset/如果您想重複 –
「涉及回調onAnimationEnd在監聽器中的骯髒的黑客攻擊」 - 看起來文章描述了相同的方法 – ComethTheNerd
哦,我誤解了你的評論。但是,動畫結束的精確時刻的回調不會被視爲骯髒的黑客IMO。 –