首页 > 解决方案 > AlphaAnimation 在 KitKat 中旋转 Framelayout

问题描述

我有一个简单的活动,可以将箭头旋转到随机角度,当箭头停止旋转时,它会闪烁。闪烁效果是应用于imageview箭头的点亮版本的 alpha 动画。

它在及以上工作得很好Lollipop,但是在KitKat应用 alpha 动画时,它会否定已setFillAfter完成的旋转动画,并且箭头会立即变为笔直向上(0 度)

  public void Spin2 ()
    {
        spinning = true;
        degreeEnd = rnd.nextInt(360);

        RotateAnimation spinIt = new RotateAnimation(0,3600+degreeEnd, RotateAnimation.RELATIVE_TO_SELF,0.5f,RotateAnimation.RELATIVE_TO_SELF,0.5f);
        spinIt.setDuration(6000);
        spinIt.setFillAfter(true);
        spinIt.setInterpolator(new DecelerateInterpolator());
        spinIt.setAnimationListener(new Animation.AnimationListener() {
            @Override
            public void onAnimationStart(Animation animation) {

            }

            @Override
            public void onAnimationEnd(Animation animation) {
                arrowLit.setVisibility(View.VISIBLE);

                animBlink = new AlphaAnimation(1,0);
                animBlink.setDuration(500);
                animBlink.setInterpolator(new AccelerateInterpolator() );
                animBlink.setRepeatCount(Animation.INFINITE);

                // in KitKat this animation seems to reset the rotation..
                arrowLit.startAnimation(animBlink);

                spinning = false;
            }

            @Override
            public void onAnimationRepeat(Animation animation) {

            }
        });

        theSpinner.startAnimation(spinIt);

    }

有趣的是,当您再次开始旋转时,它会弹回它应该在的位置 (degreeEnd) 并从那里开始旋转。

就像它暂时覆盖setFillAfter了旋转。我setFillBefore在动画上尝试了各种组合等。此外,如果我将闪烁动画设置为有限数字(例如 4),它将停止并保持在零 - 在我重新旋转之前它不会正确。

同样,这在 API 20 及更高版本中运行良好。

谢谢你的帮助

安迪

标签: androidandroid-animationandroid-4.4-kitkat

解决方案


这似乎与Frame Layout. 一旦它脱离了等式,它就可以在 KitKat 上正常工作。


推荐阅读