1

アニメーション リスナーで提供される Animator で .cancel() を呼び出せない理由はありますか?

次のコードを実行すると、StackOverflowError が発生します。

        animation.addListener(new ValueAnimator.AnimatorListener() {
            @Override
            public void onAnimationStart(Animator animator) {
                if (!showCircles)
                    animator.cancel();
            }
        ....
4

2 に答える 2

5

解決策を発見しました。

animator.removeAllListeners();に電話する前に、 に電話する必要があることがわかりましたanimator.cancel();。(これはほとんどすべての 4.0 以降のデバイスに当てはまりますが、GSIII では何らかの理由でその必要はありません。)

何らかの理由で、cancel()コマンドがonAnimationStart再度トリガーされていました (無限ループに陥っていました)。

于 2012-11-22T04:23:41.670 に答える
1

アニメーターをキャンセルしても、リスナーはまだイベントをリッスンしていると思います。

これが機能するかどうかは完全にはわかりませんが、次を追加してみてください。

if(animator!= null){animator.cancel(); }

これがお役に立てば幸いです

RF

于 2012-10-31T22:05:41.927 に答える