1

ユーザーが画面に描画できるアプリを作成しています。私のコードは実際にパスを作成し、次に行を作成します。しかし、これは、ユーザーが画面の指を離して画面の別の部分に移動すると、次のビデオで発生するように線が作成されます。 http://youtu.be/CBv1wtUC2g4

次のコードは、drawview のコードです。

public class DrawView extends View implements OnTouchListener {
private static final String TAG = "DrawView";

List<Point> points = new ArrayList<Point>();
Paint paint = new Paint();
int action;
int draw=0;
Boolean finger=true;

public DrawView(Context context) {
    super(context);
    setFocusable(true);
    setFocusableInTouchMode(true);

    this.setOnTouchListener(this);

    paint.setColor(Color.BLACK);
    paint.setStyle(Paint.Style.STROKE);
    paint.setStrokeWidth(5);
    paint.setAntiAlias(true);
    }

@Override
protected void onDraw(Canvas canvas) {
    // TODO Auto-generated method stub

    Path path = new Path();
    boolean first = true;

        for(int i = 0; i < points.size(); i += 2){
            Point point = points.get(i);

                if(first){
                    first = false;
                    path.moveTo(point.x, point.y);
                }
                else if(i < points.size() - 1){
                    Point next = points.get(i + 1);
                    path.quadTo(point.x, point.y, next.x, next.y);
                }
                else {
                    path.lineTo(point.x, point.y);
                }

            }

    canvas.drawPath(path, paint);       

}
    public boolean onTouch(View view, MotionEvent event) {
        action = event.getAction();

        Point point = new Point();
        point.x = event.getX();
        point.y = event.getY();
        points.add(point);
        invalidate();    
        Log.d(TAG, "point: " + point);

        if (action == MotionEvent.ACTION_MOVE) {
            finger = true;
       }
       if (action == MotionEvent.ACTION_UP) {
            finger = false;
       }
       draw++;
        return true;
    }
}

class Point {
    float x, y;

    @Override
    public String toString() {
        return x + ", " + y;
    }
}

また、私が必要としているのは、オブジェクト (パスと行) を含む配列であると思いますが、その方法がわかりません。この方法を使用すると、最後のオブジェクトを削除して戻ることができると思いますか?

4

1 に答える 1