Android: второе вращение изображения на 180 градусов вокруг Y отражает изображение

Я пытаюсь заставить изображение вращаться вокруг оси Y, аналогично переворачиванию карты, но с обеих сторон должно быть одинаковое изображение.

Для этого я использую ObjectAnimator в AnimationSet (хотя это происходит, когда вращение по Y является единственной анимацией в наборе, а также когда оно комбинируется с другими анимациями), чтобы повернуть его от 0 до -180 вокруг оси Y. Это отлично работает с первого раза. Однако, если я щелкну по нему еще раз, изображение внезапно станет зеркальным, а затем повернется на 180 градусов вокруг оси Y.

Как получилось, что изображение зеркально отображается/переворачивается перед анимацией? Моя текущая идея заключается в том, что он сохраняет какое-то свойство, поэтому, пока он сначала переходит от 0 до -180, в следующий раз он прыгнет от -180 до 0, а затем снова повернется от 0 до -180. Я не уверен, что это причина, однако, если это так, как я могу обойти это и предотвратить это?

Спасибо!


person dbrats    schedule 07.07.2015    source источник


Ответы (2)


Если я вас правильно понял, это происходит потому, что ObjectAnimator на самом деле не применяет окончательное значение. Вы должны использовать AnimationListener и onAnimationEnd для сохранения состояния представления.

person MightySeal    schedule 07.07.2015

Попробуйте сбросить вращение Y обратно на ноль после завершения анимации.

    animation.addListener(new AnimatorListenerAdapter() {
        @Override public void onAnimationEnd(Animator animation) {
            super.onAnimationEnd(animation);
            view.setRotationY(0);
        }
    });
person ag047    schedule 24.12.2017