0

我想在屏幕上画线,但我的应用程序只画了虚线。那么我应该在我的代码中添加什么?

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

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

    this.setOnTouchListener(this);

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

@Override
public void onDraw(Canvas canvas) {
    for (Point point : points) {
        canvas.drawCircle(point.x, point.y, 5, paint);
        // 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();
    points.add(point);
    invalidate();
    Log.d(TAG, "point: " + point);
    return true;
    }
}

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

2 回答 2

0

编辑

使用 drawLine 或 drawPath 而不是 drawCircle。

我建议你看看API DemosFingerpaint的例子

于 2012-05-22T09:19:18.613 回答
0
  1. 在 2 组点之间使用 drawLine
  2. 对于更平滑的线条,在 onTouch 中获取所有历史事件并首先处理它们
  3. 为了更快/更流畅,仅使点发生变化的矩形无效

在这里阅读更多

于 2012-05-22T10:02:03.623 回答