线条碰撞时画线并产生错误

时间:2012-07-05 07:40:18

标签: android canvas ondraw

我正在绘制圆形并希望当线条匹配在一起然后生成错误。我已经完成了一些编码,这段代码能够在触摸时绘制线条,但问题是当线条匹配在一起时它无法生成错误。所以可以任何人都建议我做错了什么。

代码

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

        List<Point> points = new ArrayList<Point>();
        Paint paint = new Paint();

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

            DrawView.this.setOnTouchListener(DrawView.this);

            paint.setColor(Color.WHITE);
            paint.setAntiAlias(true);
        }

        public void onDraw(Canvas canvas) {
            for (Point point : points) {
                canvas.drawCircle(point.x, point.y, 5, paint);
                // canvas.drawLine(point.x, point.y, 5, 0, paint);
                // canvas.drawPaint(p);
                // Log.d(TAG, "Painting: "+point);
            }
        }

        public boolean onTouch(View view, MotionEvent event) {
            // if(event.getAction() != MotionEvent.ACTION_DOWN)
            // return super.onTouchEvent(event);
            Point point = new Point();
            point.x = event.getX();
            point.y = event.getY();
            for (int i = 0; i < points.size(); i++) {
                if (point.equals(points.get(i))) {
                    System.out
                            .println("*****************************ERROR*******************************************");
                } else {
                    System.out.println("Value of points" + points);
                    System.out
                            .println("***********************ELSE***********************************");
                }
            }
            points.add(point);
            invalidate();
            Log.d(TAG, "point: " + point);
            return true;
        }
    }

   class Point {
    float x, y;

    public boolean equals(Object o) {
        if (!(o instanceof Point))
            return false;
        Point p = (Point) o;
        return x == p.x && y == p.y;
    }

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

1 个答案:

答案 0 :(得分:0)

您需要为Point类实现equals() - 方法。默认实现可能无法比较您的x&amp; y属性。