如何检查触摸事件是否在android中的某个区域之外或之内

时间:2016-05-21 15:47:49

标签: android android-touch-event

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

enter image description here

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分: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。这是合乎逻辑的,你的点需要小于 r (这是你的圆的半径)从中心点(x坐标为0)和y,无论你给它什么,我我不太清楚你用什么来吸引球场。此外,touchX需要centerX正确({strong>&gt; )<% @examscore.each do |ex| %> <tr> ,因为如果不是,则触摸不在现场。反向逻辑适用于右3点区域。

唯一可以推断出来的是给这个方法的参数(你没有共享任何代码,所以我不知道你的半径是什么,或者法院的坐标是什么)。