0

我正在使用我自己定制的 VIEW 做一个简单的 android 动画。我在扩展类的onDraw()方法上画了两个圆圈。一个圆圈在拖动时移动,而另一个圆圈在某个位置上是静止的。如果动圈碰到静圈的任意一点,动圈的颜色就会变成静圈的颜色。classViewMotionEvent

例如

int_circle_radius= 50;
int circle1_x = 0;
int circle1_y = 0;
int circle2_x = 200;
int circle2_y = 200;

让我们假设作为圆 1 的移动圆被拖放到圆 2 的某个点。

我尝试使用下面的公式,但圆圈 1 的颜色只有在它真的到达圆圈 2 的确切位置时才会改变。

if (circle1_x == circle1_x && circle1_y == circle2_y){
paint.setColor(Color.RED);
}

我知道这里的问题是一个圆的半径有很多点,但是如果一个圆将他的任何点与另一个圆接触,我怎么能触发一个特定的动作呢?谢谢。

4

1 回答 1

0

您可以简单地计算两个圆的中心之间的距离。如果距离小于半径的两倍,则圆相交。计算起来很容易。您不能期望得到确切MotionEvent的圆距离等于双半径的位置,因此您必须检查小于或等于的距离:

int deltaX = circle1_x - circle2_x;
int deltaY = circle1_y - circle2_y;
if(Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2)) <= 2 * circle_radius) {
    paint.setColor(Color.RED);
}
于 2017-03-04T18:30:23.057 回答