RotateAnimation Get Текущий угол изображения - PullRequest
0 голосов
/ 19 сентября 2019

У меня вопрос к RotationAnimation.

Первый.
Есть ли прослушиватель во время анимации?
запуск, запуск анимации
повтор, повтор анимации
остановка, остановка анимации.

но нет прослушивателя анимации, чтобы проверить, что происходит.

секунда,
любой другой получает текущий угол поворота изображения?

Я думаю, ImageView вращается с помощью функции вращающей анимации.
, поэтому я создал поток таймера и запустил 1 секунду

'''
timer = new Timer();
       timerTask = new TimerTask() {
       public void run(){
       Log.e("LOG",  " [angle]: " + String.format("%3.1f",  rotateImage.getRotation());
    }
};
timer.schedule(timerTask, 0, 1000);

'''

, но я не вижу измененное значение во время вращения.

как узнать текущий угол при повороте?

спасибо.

1 Ответ

0 голосов
/ 19 сентября 2019

Для анимации вращения, Да, как показано ниже:

RotateAnimation rotateAnimation = new RotateAnimation();
rotateAnimation.setAnimationListener(new Animation.AnimationListener() {
  @Override
  public void onAnimationStart(Animation animation) {

  }

  @Override
  public void onAnimationEnd(Animation animation) {

  }

  @Override
  public void onAnimationRepeat(Animation animation) {

  }
});

Вы также можете использовать аниматоры объектов для анимации вращения:

ObjectAnimator rotateAnimation = ObjectAnimator.ofFloat(targetView, View.ROTATION, startAngle, endAngle);
rotateAnimation.addListener(new Animator.AnimatorListener() {
  @Override
  public void onAnimationStart(Animator animation) {

  }

  @Override
  public void onAnimationEnd(Animator animation) {

  }

  @Override
  public void onAnimationCancel(Animator animation) {

  }

  @Override
  public void onAnimationRepeat(Animator animation) {

  }
});

Чтобы получить угол вашего ImageView, просто используйте imageView.getRotation();, это даст вам int значение текущего угла поворота.

Вытакже не нужно Timer, потому что ObjectAnimator и rotateAnimator обеспечивают контроль времени:

rotateAnimation.setDuration(1000); // run animation for 1000 milliseconds or 1 second
rotateAnimation.setStartDelay(1000); // delay animation for 1000 milliseconds or 1 second

Наконец, для получения угла поворота В течение времени, когда выполняется анимация, существует метод слушателя, называемый addUpdateListener:

rotateAnimation.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
  @Override
  public void onAnimationUpdate(ValueAnimator animation) {
    int value = (int) animation.getAnimatedValue(); // dynamic value of angle
  }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...