Предотвратить сброс RotateAnimation при отмене - PullRequest
1 голос
/ 13 января 2012

У меня есть простой RotateAnimation, чтобы анимировать ImageView до бесконечности, пока я не остановлю его. У меня анимация настроена следующим образом:

    Animation spin = new RotateAnimation(0.0f, 1800.0f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
    spin.setInterpolator(new LinearInterpolator());
    spin.setRepeatCount(Animation.INFINITE);
    spin.setDuration(5000);
    imageView.setAnimation(spin);

Когда я вызываю imageView.cancelAnimation(), могу ли я "заморозить" анимацию прямо в любом кадре, на котором она закончилась (или под каким углом), вместо того, чтобы сбросить ее до первого кадра?

Ответы [ 2 ]

2 голосов
/ 04 января 2013

У меня есть приложение, которое должно удерживать свое положение поворота после достижения определенного угла.Я довольно долго искал и наконец обнаружил, что вызывал метод setFillAfter ().Это остановит вращение от сброса.

    RotateAnimation rotate = new RotateAnimation(startingPoint, value, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
    image.setAnimation(rotate);

    rotate.setDuration(ROTATION_INTERVAL);
    rotate.setFillAfter(true);
0 голосов
/ 13 января 2012

Вам, вероятно, лучше обернуть содержимое изображения в RotateDrawable и установить его на ImageView, а не использовать анимацию. Вы по-прежнему можете анимировать переход, используя простой обработчик для многократного вызова setImageLevel() для регулировки угла поворота.

Когда придет время заморозить анимацию, просто прекратите публикацию на Handler, и изображение останется на своем последнем установленном уровне. Затем вы можете перезапустить, если хотите, возобновив сообщения на Handler.

Другой вариант - создать пользовательский ViewGroup и использовать getChildStaticTransformation(), чтобы применить пользовательское преобразование к дочернему элементу ImageView. Вы все равно будете обрабатывать шаги анимации вручную, так что вы можете запускать / останавливать в любой момент, когда захотите, но Transformation - это то, что система анимации использует для анимации видов, чтобы вы могли получить результаты ближе к этому эффекту.

НТН

...