Wrapper
Wrapper

Reputation: 81

Android paint/canvas issue; drawing smooth curves

How do I get smooth curves instead of dots or circles, when I draw with my finger on the touch screen, in Android? I am using the following code-

public class DrawView extends View implements 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);

    this.setOnTouchListener(this);

    paint.setColor(Color.WHITE);
    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;
}
}

Upvotes: 3

Views: 7845

Answers (3)

Samuh
Samuh

Reputation: 36484

There is a FingerPaint application bundled with API demos package; you can take a look at that. Here is the link

Upvotes: 5

Steve Haley
Steve Haley

Reputation: 55714

I imagine you'd have to use some kind of interpolation and fill in the gaps yourself. It would completely kill the system if it had to despatch touch events for every single pixel your finger moved across.

Upvotes: 0

Related Questions