2017-10-15 313 views
0

我需要的是一個無限可重複的AnimatorSet(由兩個連續的animations組成),但也是一種安全地停止這些animations(即最終狀態與起始狀態相同)的方法。例如通過在屏幕上點擊來停止。Android AnimatorSet重複然後取消

主要問題,我是當我試圖通過調用animatorSet.end()cancel(),動畫被停止或者中途或完成第一動畫的(因此沒有返回到原來的狀態)停止。

我找到了一個解決方案,這個解決方案實際上是在SO上找到的許多不同解決方案的組合。

重要提示:兩個連續的動畫一起創建一個優美的循環,這樣animation1緩慢地向右取0123,,而animation2更快地返回到左側。這就是爲什麼我需要停止優雅地結束,以便它完成animation1animation2,無論狀態是什麼時候我想停止它。

回答

0

要創建一個可重複AnimatorSet

animatorSet = new AnimatorSet(); 
animatorSet.play(animation1).after(animation2); 

animatorSet.addListener(new AnimatorListenerAdapter() { 
      boolean isCancelled; 

      @Override 
      public void onAnimationEnd(Animator animation) { 
       if (!isCancelled) { 
        animatorSet.start(); 
       } 
      } 

      @Override 
      public void onAnimationCancel(Animator animation) { 
       this.isCancelled = true; 
      } 
     }); 

animatorSet.start(); 

現在下面的方法stopAnimation()你想從你的onClickListener或任何你需要監聽到記animatorSet停止animation(熊呼叫必須訪問,例如使它成爲一個領域)。

public void stopAnimation(Context context){ 
     guideAnimationSet.removeAllListeners(); 

最後,我並不需要任何cancel()end()。 這實際上是有道理的:一旦我刪除listeneranimatorSet將完成當前animations,然後將不能再次啓動它,因爲listener重複已消失。

希望它可以幫助別人!

相關問題