如何旋转图像直到检测到碰撞

时间:2015-01-15 06:10:04

标签: java android android-animation collision-detection

所以我有这个代码可以围绕靠近屏幕中心的点旋转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)) {

}

我如何进行某种循环,一直旋转图像直到检测到碰撞,然后它将停止旋转。我似乎无法弄清楚这一点。感谢。

2 个答案:

答案 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();