安卓:如何确定触摸事件是在一个圆圈?(Android: How to determine if a

2019-08-06 03:09发布

我想播放媒体时,我摸了圆形区域,但如何能够确定我的触摸位置在圆圈?

到目前为止,我扩展view和执行onTouchEvent ,我需要的算法决定是否位置是内或外循环。

Answer 1:

你应该采取的视图的位置View.getX()和View.getY()来获得xy左上角的,也假设你知道半径(或能够获得该视图的宽度/高度,以确定半径)。 在此之后,获得xTouchyTouch使用MotionEvent.getX()和MotionEvent.getY()和检查:

double centerX = x + radius;
double centerY = y + radius;
double distanceX = xTouch - centerX;
double distanceY = yTouch - centerY;

boolean isInside() {
    return (distanceX * distanceX) + (distanceY * distanceY) <= radius * radius;
}

其计算公式是用于确定点是内圆区域或没有学校的几何形状只是解释。 请参阅圈方程直角坐标系的更多细节。

价值观的解释是:

(x + radius)(y + radius)是圆的中心。

(xTouch - (x + radius))是从接触点的距离用X到中心

(yTouch - (y + radius))是从接触点的距离用Y到中心



Answer 2:

另一种方式来做到这一点,简单一点,我认为,是使用两个点公式之间的距离,该距离比较你的半径。 如果计算出的距离小于半径然后使触摸是你的圈子里面。

下面的代码

// Distance between two points formula
float touchRadius = (float) Math.sqrt(Math.pow(touchX - mViewCenterPoint.x, 2) + Math.pow(touchY - mViewCenterPoint.y, 2));

if (touchRadius < mCircleRadius)
{
    // TOUCH INSIDE THE CIRCLE!
}


文章来源: Android: How to determine if a touch event is in a circle?