在Android中如何获取两点之间的距离?

11

我将两个指针设置在ACTION_POINTER_DOWN内部

point1.set(event.getX(0),event.getY(0));
point2.set(event.getX(1),event.getY(1));

如何获取这两个点之间的距离?有什么方法可以获取它吗?

我想获得距离以制作滚动效果。有了距离,我就可以将其用作缩放因子并调整我的布局。

希望有人能告诉我如何做到这一点!


4
你可以使用勾股定理来计算! - Neo
3个回答

25

不仅仅是Android..

我们从三角函数课堂中记得,可以使用毕达哥拉斯定理计算两点之间的距离,如此处所示。

但在代码中,基本上你想要的是以下内容:

double d = Math.sqrt(Math.pow(event.getX(1) - event.getX(0), 2) + Math.pow(event.getY(1) - event.getY(0), 2));

其中 d 是两点之间的距离。


我遇到了一个错误... sqrt(double) 无法应用于 sqrt(double,double)。 - user4729909
1
抱歉,代码中有一个打字错误,我本应该对两个平方数求和,但不小心加了一个逗号。 - Pasi Matalamäki
1
一个小操作符可以改变一切!感谢您的解决方案!! - user4729909

10
Math.hypot(x1 - x2, y1 - y2)

应该更快些。

Math.hypot


2
如果你能简要解释一下为什么这样会更快,我相信你的回答会更好。 - Bonifacio2

2

计算两点间距离并不是仅限于Android:

    double x1 = event.getX(1);
    double y1 = event.getY(1);
    double x2 = event.getX(0);
    double y2 = event.getY(0);
    double x = Math.sqrt(Math.pow(x2 - x1, 2) - Math.pow(y2 - y1, 2));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接