假设我已经在画布上绘制了一张位图或简单的圆形。我该如何设置OnTouchListener来检查我的绘制是否被触摸?由于我将在画布上绘制多个圆圈,我希望每一个都有一些独特的id,这样我就可以相应地进行操作。
假设我已经在画布上绘制了一张位图或简单的圆形。我该如何设置OnTouchListener来检查我的绘制是否被触摸?由于我将在画布上绘制多个圆圈,我希望每一个都有一些独特的id,这样我就可以相应地进行操作。
//x and y are co-ordiantes when touched.
//center_x and center_y are co-ordinates of the center of the circle.
//R is the radius of the cirlcr
float dx = Math.abs(x-center_x);
float dy = Math.abs(y-center_y);
float R = radius ;//radius of circle.
boolean checkDistance(float dx,float dy,float R)
{
if(dx>R)
{
return false;//outside
}
else if(dy>R)
{
return false;//
}
else
{
return true;
}
}
为什么你不获取用户绘图坐标并将其与你的圆形坐标匹配?
如何捕获用户绘图坐标:
int x = (int) event.getX();
int y = (int) event.getY();
使用canvas不能轻松地完成这个任务。您应该自己处理触摸事件,并根据它们的坐标/大小/z-index检查您触摸的是哪个圆。
但是,如果每个圆都是单独的视图,则可以使事情变得更容易。在这种情况下,您将能够使用标准的Android触摸事件监听器。对于圆形,您应该创建自定义视图类,该类将在处理触摸时考虑圆形形状。