Меня спросили, как получить угол поворота в анимации поворота.
RotateAnimation Получить текущий угол изображения
Моя конечная цель — отправить сигнал микроконтроллеру в соответствии с углом, заданным бегущей рулеткой.
Я проверил журнал угла поворота изображения с помощью следующего кода:
objectAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator valueAnimator) {
double angle = Double.parseDouble(objectAnimator.getAnimatedValue().toString());
Log.d("LOG", "animation : " +
}
catch (Exception e){
}
}
});
//setDuration -> 360
//range -> 0~360
//setInterpolator -> LinearInterpolator
Журнал показан ниже.
D/LOG: animation : 0.0
D/LOG: animation : 0.0
D/LOG: animation : 33.0
D/LOG: animation : 49.0
D/LOG: animation : 66.0
D/LOG: animation : 83.0
D/LOG: animation : 99.0
D/LOG: animation : 133.0
D/LOG: animation : 150.0
D/LOG: animation : 166.0
D/LOG: animation : 183.0
D/LOG: animation : 216.00002
D/LOG: animation : 233.0
D/LOG: animation : 249.99998
D/LOG: animation : 266.0
D/LOG: animation : 283.0
D/LOG: animation : 316.0
D/LOG: animation : 333.0
D/LOG: animation : 350.0
D/LOG: animation : 360.0
Я не придавал вращению изображения никакого ускорения или замедления с настройкой LinearInterpolator.
Я обнаружил, что onAnimationUpdate вызывается частотой кадров анимации. (точно нет?)
Я хочу знать абсолютный угол, а не угол при обновлении анимации.
Как я могу сделать?
и есть ли другой способ сделать анимацию вращения и получить абсолютный угол?
Спасибо