如何在android中创建可点击的行

时间:2014-06-20 21:25:03

标签: java android canvas graphics event-handling

如果我使用该行:

  

canvas.drawLine(stx,sty,spx,spy);

我如何稍后用例如MotionEvent检测线是否被触摸? 让我们假设这条线不直。

我知道有RectRectF这样的事情可以处理事件,但有些事情我无法绘制斜线。

也许有人可以建议我另一种方法来绘制这条线,以便使用的对象可以处理事件......


经过一夜的研究,似乎要走的路是从Canvas切换到OpenGL ES API。

又一次犯规......

但是在给了它一秒后,如果有

  

线(点(x1,y1),点2(x2,y2))

就像一位慈爱的母亲一样,Math带来了理解和简单的反感软件,我们可以通过简单的代码行确定事件点是否包含在Line中:

  

(x2 - x1)(eventY - y1)=(y2 - y1)(eventX - x1);

为了简化模糊触摸区域,我们可以添加:

for(int i = -10; i<10;i++){
 for(int j=-10; j<10; j++){
  if((x2 - x1)*(eventY+i - y1) == (y2 - y1)* (eventX+j - x1))
   return true;}}

0 个答案:

没有答案