所以我有这个代码可以围绕靠近屏幕中心的点旋转imageView
RotateAnimation anim = new RotateAnimation(0, 360,0,135);
anim.setInterpolator(new LinearInterpolator());
anim.setRepeatCount(Animation.INFINITE);
anim.setDuration(2000);
image.startAnimation(anim);
我也有这段代码检查该图像与另一张图像之间的冲突
Rect rc_img1 = new Rect();
image.getDrawingRect(rc_img1);
Rect rc_img2 = new Rect();
image2.getDrawingRect(rc_img2);
if (Rect.intersects(rc_img1, rc_img2)) {
}
我如何进行某种循环,一直旋转图像直到检测到碰撞,然后它将停止旋转。我似乎无法弄清楚这一点。感谢。
答案 0 :(得分:0)
尝试使用布尔标志来检查图像是否发生了碰撞,如果没有继续旋转。它可能不起作用,但我认为值得尝试。
if (Rect.intersects(rc_img1, rc_img2)) {
isCollided = true;
}
答案 1 :(得分:0)
将ObjectAnimator与UpdateListener一起使用,并检查视图是否在更新方法中发生冲突。
// Generate RotationAnimator
final ObjectAnimator animation = ObjectAnimator.ofFloat(view, "rotationY", 0.0f, 360f);
animation.setDuration(5000);
animation.setRepeatCount(ObjectAnimator.INFINITE);
animation.setInterpolator(new AccelerateDecelerateInterpolator());
// Add Update Listener
animation.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
// Check if collision
if(isCollided){
animation.cancel();
}
}
});
animation.start();