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アプリ のように認識したいと考えています。ここに画像の説明を入力

4

1 に答える 1

0

3 つのイベントを追跡するには、次を使用する必要があります。

  • MotionEvent.ACTION_DOWNイベントの開始場所を追跡します。
  • MotionEvent.ACTION_MOVE動きを追跡します (スワイプ)。
  • MotionEvent.ACTION_UPイベントが停止した場所を追跡します。

この例を参照してください。では、動きを追跡してパスを描画する方法を示します。

于 2013-09-27T08:14:25.160 に答える