Android 7.0动画无法正常工作(alpha,持续时间,延迟)

时间:2017-11-24 22:02:27

标签: java android animation android-animation android-7.0-nougat

将我的手机从Android 6.0升级到7.0后,动画无法正常工作。

我的项目中有一个小动画类,有3个简单的静态方法:

public static Animation fadeInAnimation(int duration, int offset)
{
    Animation animation = new AlphaAnimation(0.0f, 1.0f);
    animation.setInterpolator(new DecelerateInterpolator());
    animation.setDuration(duration);
    animation.setStartOffset(offset);

    return animation;
}

public static Animation fadeOutAnimation(int duration, int offset)
{
    Animation animation = new AlphaAnimation(1.0f, 0.0f);
    animation.setInterpolator(new AccelerateInterpolator());
    animation.setDuration(duration);
    animation.setStartOffset(offset);

    return animation;
}

public static Animation fadeInOutAnimation(int duration, int repeatCount, int repeatMode, int offset)
{
    Animation animation = new AlphaAnimation(0.0f, 1.0f);
    animation.setInterpolator(new DecelerateInterpolator());
    animation.setRepeatCount(repeatCount);
    animation.setRepeatMode(repeatMode);
    animation.setDuration(duration);
    animation.setStartOffset(offset);

    return animation;
}

在SplashScreen类中,我以这种方式使用它们:

mAnimationScreenStart = Animations.fadeInAnimation(1500, 300);
mAnimationScreenEnd = Animations.fadeOutAnimation(1500, 0);
textView.startAnimation(Animations.fadeInOutAnimation(ANIMATION_DURATION, Animation.INFINITE, Animation.REVERSE, ANIMATION_OFFSET));

TextView是一个"点击继续"文字和它的工作正常。 然后我为两个动画添加了监听器。在Android 6.0上一切都很好,但在7.0持续时间表现得像延迟,而不像实际的动画持续时间。

然后我尝试在没有我之前课程的情况下做动画,如下所示:

frameLayout.animate().alpha(1f).setDuration(3000).setStartDelay(350).setListener(new AnimatorListenerAdapter()
    {
        @Override
        public void onAnimationEnd(Animator animation)
        {
            super.onAnimationEnd(animation);
            frameLayout.setAlpha(1f);

            frameLayout.setOnClickListener(new View.OnClickListener()
            {
                @Override
                public void onClick(View v)
                {
                    if (!isClicked)
                    {
                        isClicked = true;
                        frameLayout.animate().alpha(0f).setDuration(3000).setListener(new AnimatorListenerAdapter()
                        {
                            @Override
                            public void onAnimationEnd(Animator animation)
                            {
                                super.onAnimationEnd(animation);
                                frameLayout.setAlpha(0f);

                                Intent intentLogin = new Intent(StartScreen.this, Login.class);
                                startActivity(intentLogin);
                                finish();
                            }
                        });
                    }
                }
            });
        }
    });

isClicked只是一个布尔值,以确保不会重复结束动画。

但是,动画仍然不能正常工作。有动画,但它的持续时间就像是0.5秒,我设置的持续时间就像延迟一样。我尝试过像frameLayout.setVisibility(View.VISIBLE)和其他很多东西。我已经在网上搜索过Android 7.0的问题,但是我没有找到任何东西。

正如我所说,6.0动画正常运行没有任何问题。

我很乐意帮助这件事。

0 个答案:

没有答案