我希望在点击圆形区域时播放媒体,但是如何确定我的触摸位置在圆内?
到目前为止我扩展了一个 view
并实现了 onTouchEvent
, 我需要算法来决定位置是在圆内还是圆外。
x
和 y
位置,并假设您知道半径(或者能够获得视图的宽度/高度来确定半径)。然后,使用 MotionEvent.getX() 和 MotionEvent.getY() 获得xTouch
和yTouch
,并检查: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轴上中心点的距离。
// 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!
}