简体   繁体   English

值动画制作器中的循环会导致java.lang.StackOverflowError崩溃:堆栈大小8MB

[英]Loop in value animator cause in crash with java.lang.StackOverflowError: stack size 8MB

I using two value animation and in end of one i start another. 我使用两个值的动画,最后一个开始。 It is work fine on my tested devices but get java.lang.StackOverflowError: stack size 8MB on many devices in live. 在我测试过的设备上可以正常工作,但在许多在线设备上都出现java.lang.StackOverflowError: stack size 8MB

this is how i used value animator: 这就是我使用值动画师的方式:

 ObjectAnimator fadeOut = ObjectAnimator.ofInt(drawableIcon, "alpha", 255, 0);
 ObjectAnimator fadeIn = ObjectAnimator.ofInt(drawableIcon, "alpha", 0, 255);

    fadeIn.setDuration(300);
    fadeOut.setDuration(300);
    fadeOut.setStartDelay(500);

    fadeIn.start();

    fadeIn.addListener(new Animator.AnimatorListener() {
        @Override
        public void onAnimationStart(Animator animation) {

        }

        @Override
        public void onAnimationEnd(Animator animation) {
            fadeOut.start();
        }

        @Override
        public void onAnimationCancel(Animator animation) {

        }

        @Override
        public void onAnimationRepeat(Animator animation) {

        }
    });

    fadeOut.addListener(new Animator.AnimatorListener() {
        @Override
        public void onAnimationStart(Animator animation) {

        }

        @Override
        public void onAnimationEnd(Animator animation) {
            fadeIn.start();
        }

        @Override
        public void onAnimationCancel(Animator animation) {

        }

        @Override
        public void onAnimationRepeat(Animator animation) {

        }
    });

I googled but coul not find any reason and solution. 我用谷歌搜索,但是找不到任何原因和解决方案。 Is any body have any idea? 有没有什么主意?

You should repeat animation instead of creating a loop dependency between them. 您应该重复动画而不是在它们之间创建循环依赖关系。 Use AnimatorSet to do that: 使用AnimatorSet可以做到这一点:

    AnimatorSet animatorSet = new AnimatorSet();
    ObjectAnimator fadeIn = ObjectAnimator.ofInt(drawableIcon, "alpha", 0, 255);
    ObjectAnimator fadeOut = ObjectAnimator.ofInt(drawableIcon, "alpha", 255, 0);
    fadeIn.setDuration(300);
    fadeOut.setDuration(300);
    fadeOut.setStartDelay(500);

    animatorSet.playSequentially(fadeIn, fadeOut);
    animatorSet.setDuration(1100);
    animatorSet.addListener(new AnimatorListenerAdapter() {

        private boolean mCanceled;

        @Override
        public void onAnimationStart(Animator animation) {
            mCanceled = false;
        }

        @Override
        public void onAnimationCancel(Animator animation) {
            mCanceled = true;
        }

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

    });
    animatorSet.start();

Here is the result: 结果如下:

在此处输入图片说明

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 stack = java.lang.StackOverflowError:堆栈大小8MB - stack=java.lang.StackOverflowError: stack size 8MB 错误java.lang.StackOverflowError:堆栈大小8MB - Error java.lang.StackOverflowError: stack size 8MB java.lang.StackOverflowError:视图中的堆栈大小为8MB - java.lang.StackOverflowError: stack size 8MB in Views java.lang.StackOverflowError:堆栈大小8MB - java.lang.StackOverflowError: stack size 8MB 画画布时出现java.lang.StackOverflowError:堆栈大小8MB - I get java.lang.StackOverflowError: stack size 8MB when i draw my canvas Android Firebase java.lang.StackOverflowError:用户上传图像时堆栈大小 8MB 错误 - Android Firebase java.lang.StackOverflowError: stack size 8MB error when user is uploading an image java.lang.StackOverflowError:android studio上的堆栈大小为8MB。 怎么解决? - java.lang.StackOverflowError: stack size 8MB on android studio. How to solve it? 称为递归onResume活动java.lang.StackOverflowError的方法:堆栈大小8MB - Method called recursive onResume Activity java.lang.StackOverflowError: stack size 8MB Android Firebase实时异常java.lang.StackOverflowError:堆栈大小8MB - Android Firebase Realtime Exception java.lang.StackOverflowError: stack size 8MB StackOverflowError:Android 8.1 ProgressBar上的堆栈大小为8MB - StackOverflowError: stack size 8MB on Android 8.1 of ProgressBar
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM