Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> Android之Dedug--Circular dependencies cannot exist in AnimatorSet,circular

Android之Dedug--Circular dependencies cannot exist in AnimatorSet,circular

編輯:關於android開發

Android之Dedug--Circular dependencies cannot exist in AnimatorSet,circular


今日,在學習AnimatorSet時,使用play、with、after、before時,代碼書寫如下:

ObjectAnimator animator1 = ObjectAnimator.ofFloat(v,"translationX",300f);
ObjectAnimator animator2 = ObjectAnimator.ofFloat(v,"scaleX",1f,0f,1f);
ObjectAnimator animator3 = ObjectAnimator.ofFloat(v,"scaleY",1f,0f,1f);
AnimatorSet set = new AnimatorSet();
set.setDuration(1000);
set.play(animator1).after(animator2).before(animator3).with(animator2);
set.start();

運行代碼時,報錯,錯誤報告如下:

12-12 16:26:18.210 28528-28528/com.zhangmiao.animationdemo E/AndroidRuntime: FATAL EXCEPTION: main
                                                                             Process: com.zhangmiao.animationdemo, PID: 28528
                                                                             java.lang.IllegalStateException: Circular dependencies cannot exist in AnimatorSet
                                                                                 at android.animation.AnimatorSet.sortNodes(AnimatorSet.java:921)
                                                                                 at android.animation.AnimatorSet.start(AnimatorSet.java:539)
                                                                                 at com.zhangmiao.animationdemo.ObjectAnimatorDemo.onClick(ObjectAnimatorDemo.java:82)
                                                                                 at android.view.View.performClick(View.java:4868)
                                                                                 at android.view.View$PerformClick.run(View.java:20294)
                                                                                 at android.os.Handler.handleCallback(Handler.java:815)
                                                                                 at android.os.Handler.dispatchMessage(Handler.java:104)
                                                                                 at android.os.Looper.loop(Looper.java:192)
                                                                                 at android.app.ActivityThread.main(ActivityThread.java:5718)
                                                                                 at java.lang.reflect.Method.invoke(Native Method)
                                                                                 at java.lang.reflect.Method.invoke(Method.java:372)
                                                                                 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:975)
                                                                                 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:770)

然後,我將set.play(animator1).after(animator2).before(animator3).with(animator2);代碼修改為set.play(animator1);這時並不會報錯,我依次添加動畫,當添加到set.play(animator1).after(animator2).before(animator3).with(animator2);時,才會報錯,所以是最後一個with(animator2)有問題,然後,我又添加了一個動畫

ObjectAnimator animator4 = ObjectAnimator.ofFloat(v,"scaleY",1f,0f,1f);

將set.play(animator1).after(animator2).before(animator3).with(animator2);修改為

set.play(animator1).after(animator2).before(animator3).with(animator4);

代碼就不會報錯了。

所以,得到的結論是:

AnimatorSet的play、with、before、after函數不可復用同一個Animator,如果需要使用同樣的Animator,可以創建多個相同動畫的Animator,然後分別使用這多個動畫即可。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved