AlphaAnimation旋转KitKat中的帧布局

时间:2019-05-07 17:30:57

标签: android android-animation android-4.4-kitkat

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

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及更高版本中也可以正常工作。

感谢您的帮助

安迪

1 个答案:

答案 0 :(得分:0)

似乎与Frame Layout有关。一旦脱离方程式,它就可以在KitKat上正常工作。