AlphaAnimation вращает Framelayout в KitKat - PullRequest
0 голосов
/ 07 мая 2019

У меня есть простое действие, которое вращает стрелку под случайным углом, и когда стрелка перестает вращаться, она мигает. Мигающий эффект - это альфа-анимация, применяемая к imageview светящейся версии стрелки.

Он отлично работает в Lollipop и выше, но в KitKat, когда применяется альфа-анимация, он сводит на нет 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);

    }

Интересно, что когда вы снова запускаете вращение, он возвращается назад туда, где он должен быть (degEnd), и начинает вращение оттуда.

Как будто он временно отменяет setFillAfter вращения. Я пробовал различные комбинации setFillBefore и т. Д. На анимациях. Кроме того, если я установлю мигающую анимацию на конечное число (например, 4), она остановится и останется на нуле - она ​​не будет исправлена ​​до тех пор, пока я не перевернусь.

Опять же, это прекрасно работает в API 20 и выше.

Спасибо за любую помощь

Andy

1 Ответ

0 голосов
/ 08 мая 2019

Кажется, что-то связано с Frame Layout.Как только он вышел из уравнения, он отлично работает на KitKat.

...