1

我有一个篮球场或任何其他球场的图像,我想检查用户是否检查了 3 点区域的外部或内部,我该如何实现?我应该使用 x,y 的预定义点吗?

在此处输入图像描述

4

2 回答 2

0

你可以使用 x 和 y 来做到这一点,但相信我它很快就会变得非常混乱。我的建议是为不同的区域使用不同的图像视图并添加onClickListeners到每个区域。为此,您必须为法庭中的每个元素要求不同的资产。

于 2016-05-21T16:19:34.047 回答
0

好吧,如果那个区域是一个完美的半圆,我认为是这样,那么这个公式就很简单了。无论您喜欢哪种方式,您都可以获得触摸事件的 X 和 Y 坐标(这不是这里的问题,GestureDetector例如使用)。我只是给你一个isIn3PointArea()方法的例子:

private boolean isIn3PointArea(float touchX, float touchY, float centerX, float centerY, float r){
    float x = touchX - centerX;
    float y = touchY - centerY;
    return (touchX > centerX && Math.sqrt(x*x+y*y) < r);
}

解释:

这是左侧 3 点区域的方法,对于右侧区域,您只需将>操作符与零件<中的操作符替换掉即可touchX > centerX。这是很合乎逻辑的,你的点需要小于中心点(x坐标为0)和y的r(这是你的圆的半径),不管你给它什么,我不太确定你是什么用来画法庭。它还需要在touchX(大于>)的右边,centerX因为如果不是,则触摸不在现场。反向逻辑适用于右侧 3 点区域。

唯一由您决定的是为该方法提供哪些参数(您没有共享任何代码,所以我不知道您的半径是多少或球场的坐标是多少)。

于 2016-05-21T16:28:07.510 回答