旋转动画 获取图像的当前角度



我有一个关于旋转动画的问题。

第一。
动画期间是否有侦听器?
开始,开始动画 重复,重复动画停止,停止动画

但是没有动画侦听器来检查正在进行的。

其次,
有没有其他得到图像的当前旋转角度?

我认为,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);
'''

但是,我在旋转过程中看不到更改的值。

如何在旋转过程中获取当前角度?

谢谢。

对于旋转动画,是 如下所示:

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
}
});

最新更新