在画布图纸上设置触控侦听器

时间:2013-03-14 15:25:40

标签: android canvas drawing ontouchlistener

假设我在画布上绘制了一个位图图像或简单的圆圈。如何设置OnTouchListener以检查我的绘图是否已被触摸?由于我将在画布上绘制多个圆圈,我希望每个圆圈都有一些唯一的ID,以便我可以相应地工作。

3 个答案:

答案 0 :(得分:1)

当您触摸屏幕时,获取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;
 }
 }

答案 1 :(得分:0)

使用画布无法轻松完成此操作。您应该自己处理触摸事件,并根据坐标/尺寸/ z-index检查您触摸的圆圈。

但如果每个圆圈都是单一视图,那么你可以让事情变得更容易。在这种情况下,您将能够使用标准的android touch事件监听器。对于圆圈,您应该创建自定义视图类,在处理触摸时会考虑圆形。

答案 2 :(得分:0)

为什么你没有得到用户绘制坐标并将它们与你的圆坐标匹配..

如何捕获用户绘图坐标:

int x = (int) event.getX();
int y = (int) event.getY();