2013-01-03 29 views
6

拉我用手指油漆画线字符,而到目前为止,我想出了下面的代码:如何识别在画布上

case MotionEvent.ACTION_MOVE: 
    //return if touch is in this area of canvas 
    if (x<=430 || y<=80 || y>=490) return true; 
    //draw path using x and y co-ordinates 
    mPath.quadTo(previousPoint.x, previousPoint.y, (x+previousPoint.x)/2,(y+previousPoint.y)/2); 
    canvas.drawPath(mPath, paint); 
    previousPoint.x = x; 
    previousPoint.y = y; 
    //invalidate canvas on move 
    imageView.invalidate(); 
    break; 
case MotionEvent.ACTION_UP: 
    Xend=x; 
    Yend=y; 
    //validate that is it true? 
    if((Xstart>=780 && Xstart<=830) && (Xend>=780 && Xend<=830) && (Ystart>=10 && Ystart<=200) && Yend<=800 && Yend>=300){ 
    //show toast if correct 
    Toast.makeText(getBaseContext(), "Correct", Toast.LENGTH_SHORT).show(); 
    }else{ 
    //show toast with XY co-ordinates that your attempt is wrong 
    Toast.makeText(getBaseContext(), "Wrong attempt\n Xstart: "+Xstart+"\n Xend:"+Xend+"\n Ystart: "+Ystart+"\nYend:"+Yend, Toast.LENGTH_SHORT).show(); 
    } 
    imageView.invalidate(); 
    break; 

但不幸的是,上面的代码不符合我的要求。我想创建按字母顺序排列的工作表,用户通过触摸进行操作。我想知道他在哪里开始,他在哪里移动,他在哪里结束,以识别他在画布上绘制的内容,我知道在哪里获得接触点,但问题是如何识别画布上绘制的内容?想要在Playstore上识别这样的VisionObjects应用程序。 enter image description here

+0

如果您对android中的某些内容有疑问,请首先尝试在apis演示中查找示例应用程序...这是一个很好的开始。这里有一个非常好的例子来处理Android中的触摸。这是路径.. \ android-sdk-windows \ samples \ android-10 \ ApiDemos \ src \ com \ example \ android \ apis \ graphics \ FingerPaint.java – karn

+2

上面的代码是什么意思? ?),如果它与你的要求无关?我也有理解实际问题的问题:你只是想跟踪触摸动作吗?如用户触摸屏幕(开始),将他的手指向左移动5cm(移动),然后我们走(结束)? – AgentKnopf

+0

thanx回复guyz。 – Hamad

回答

0

要跟踪,你必须使用三个事件:

  • MotionEvent.ACTION_DOWN跟踪这些事件开始。
  • MotionEvent.ACTION_MOVE追踪动作(滑动)。
  • MotionEvent.ACTION_UP来跟踪事件停止的地方。

请参阅this example。展示如何通过跟踪动作来绘制路径。