Android 在画布图形上设置触摸侦听器
假设我在画布上画了一个位图图像或简单的圆圈。如何设置OnTouchListener以检查我的图形是否已被触摸?因为我将在画布上绘制多个圆,所以我希望每个圆都有一些唯一的id,以便我可以相应地工作。使用画布很难做到这一点。您应该自己处理触摸事件,并根据坐标/大小/z索引检查您触摸的圆圈Android 在画布图形上设置触摸侦听器,android,canvas,drawing,ontouchlistener,Android,Canvas,Drawing,Ontouchlistener,假设我在画布上画了一个位图图像或简单的圆圈。如何设置OnTouchListener以检查我的图形是否已被触摸?因为我将在画布上绘制多个圆,所以我希望每个圆都有一些唯一的id,以便我可以相应地工作。使用画布很难做到这一点。您应该自己处理触摸事件,并根据坐标/大小/z索引检查您触摸的圆圈 但是,如果每个圆都是一个视图,那么事情就会变得更容易。在这种情况下,您将能够使用standart android touch事件监听器。对于圆,你应该创建自定义视图类,在处理触摸时会考虑圆圈形状。 当你在屏幕上触摸
但是,如果每个圆都是一个视图,那么事情就会变得更容易。在这种情况下,您将能够使用standart android touch事件监听器。对于圆,你应该创建自定义视图类,在处理触摸时会考虑圆圈形状。
当你在屏幕上触摸时,得到X和Y坐标。你已经知道圆的中心了
//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();
您的视图有一个onTouch(..),可用于屏幕上的触摸事件,但我如何具体知道画布上的哪个圆被触摸?计算圆中心和屏幕上触摸点之间的距离。如果距离在圆的半径内,则触摸在绘制的圆内。我假设每个圆都有不同的半径。每个圆都是动态的和移动的,而且每个圆都有相同的半径使用不同的视图来绘制圆,您可以使用视图。我不知道这将如何影响性能。对于每个圆绘制,使用不同的视图。不,但我的圆是动态的,因此每次绘制圆时都要检查它们的位置,这将非常可怕。您可以将圆心和半径存储在某个位置,并使用上面的值计算距离。没有半径就不能画圆。动态绘制时,存储值并在上面的代码中使用。如何在画布上绘制自定义视图?您不应该自己绘制它们。使用Framelayout并在其中放置带有圆圈的视图。