when i try to set a new color for the path i end up changing the color of the current path
<p>here is my code.. im trying to create a coloring book using path so when i try to change the color im changin the color of the whole path.. i want to find a way to set a new color or a new path with a new color.. i trying using hushMap but ended up with the same results.. any suggestion </p>

<pre><code>    public class PaintMe extends View implements OnTouchListener {

Bitmap bmp, red, blue1, green, yello, lightblue, purple;
private Paint paint;
private Path path;
Rect rect = new Rect();
int[] colors;
Rect bred = new Rect();
Rect bblue = new Rect();
Rect blightblue = new Rect();
Rect bgreen = new Rect();
Rect byellow = new Rect();
Rect bpurple = new Rect();

public PaintMe(Context context) {
    super(context);

    // define bitmaps
    bmp = BitmapFactory
            .decodeResource(getResources(), R.drawable.spongebob);
    red = BitmapFactory.decodeResource(getResources(), R.drawable.red);
    blue1 = BitmapFactory.decodeResource(getResources(), R.drawable.blue);
    green = BitmapFactory.decodeResource(getResources(), R.drawable.green);
    yello = BitmapFactory.decodeResource(getResources(), R.drawable.yellow);
    lightblue = BitmapFactory.decodeResource(getResources(),
            R.drawable.lightblue);
    purple = BitmapFactory
            .decodeResource(getResources(), R.drawable.purple);

    paint = new Paint();
    path = new Path();

    // brush defining
    paint.setAntiAlias(true);
    paint.setStrokeWidth(20f);
    // paint.setColor(Color.BLACK);
    paint.setARGB(120, 255, 0, 0);
    paint.setStyle(Paint.Style.STROKE);
    paint.setStrokeCap(Paint.Cap.ROUND);
    paint.setStrokeJoin(Paint.Join.ROUND);

}

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

    rect.set(0, 0, canvas.getWidth(), 60);
    Paint blue = new Paint();
    blue.setColor(Color.GRAY);
    blue.setStyle(Paint.Style.FILL);

    Paint p = new Paint();
    Paint wh = new Paint();
    wh.setColor(Color.WHITE);
    p.setTextSize(24);

    canvas.drawBitmap(bmp, 0, 60, p);
    canvas.drawPath(path, paint);

    // All other lines

    // canvas.drawPath(path, paint);

    // reset button
    canvas.drawRect(rect, blue);
    canvas.drawText("Reset Canvas", canvas.getWidth() / 3, 40, p);

    // colors buttons
    bred.set(0, canvas.getHeight() - 130, 60, canvas.getHeight());
    canvas.drawRect(bred, wh);
    canvas.drawBitmap(red, 0, canvas.getHeight() - 130, p);

    bblue.set(80, canvas.getHeight() - 130, 140, canvas.getHeight());
    canvas.drawRect(bblue, wh);
    canvas.drawBitmap(blue1, 80, canvas.getHeight() - 130, p);

    blightblue.set(160, canvas.getHeight() - 130, 220, canvas.getHeight());
    canvas.drawRect(blightblue, wh);
    canvas.drawBitmap(lightblue, 160, canvas.getHeight() - 130, p);

    bgreen.set(240, canvas.getHeight() - 130, 300, canvas.getHeight());
    canvas.drawRect(bgreen, wh);
    canvas.drawBitmap(green, 240, canvas.getHeight() - 130, p);

    byellow.set(320, canvas.getHeight() - 130, 380, canvas.getHeight());
    canvas.drawRect(byellow, wh);
    canvas.drawBitmap(yello, 320, canvas.getHeight() - 130, p);

    bpurple.set(400, canvas.getHeight() - 130, 460, canvas.getHeight());
    canvas.drawRect(bpurple, wh);
    canvas.drawBitmap(purple, 400, canvas.getHeight() - 130, p);

}

@Override
public boolean onTouchEvent(MotionEvent event) {
    float eventX = event.getX();
    float eventY = event.getY();

    int x = (int) event.getX();
    int y = (int) event.getY();
    switch (event.getAction()) {
    case MotionEvent.ACTION_DOWN:
        path.moveTo(eventX, eventY);
        if (rect.contains(x, y)) {
            path.reset();
        }
        if (bred.contains(x, y)) {
            paint.setARGB(120, 255, 0, 0);
        } else if (bblue.contains(x, y)) {
            paint.setARGB(120, 0, 0, 255);
        } else if (blightblue.contains(x, y)) {
            paint.setARGB(120, 0, 0, 126);
        } else if (bgreen.contains(x, y)) {
            paint.setARGB(120, 0, 255, 0);
        } else if (byellow.contains(x, y)) {
            paint.setARGB(120, 255, 255, 0);
        } else if (bpurple.contains(x, y)) {
            paint.setARGB(120, 135, 38, 87);
        }
        return true;
    case MotionEvent.ACTION_MOVE:
        path.lineTo(eventX, eventY);
        break;
    case MotionEvent.ACTION_UP:
        // nothing to do
        break;
    default:
        return false;
    }

    // Schedules a repaint.
    invalidate();
    return true;
}

@Override
public boolean onTouch(View v, MotionEvent event) {
    // TODO Auto-generated method stub

    return false;
}
</code></pre>

<p>}</p>

<p>here is a sample pic </p>

<p><a href="http://i.stack.imgur.com/QHh1y.jpg" rel="nofollow">enter image description here</a>
<a href="http://i.stack.imgur.com/9F8mz.jpg" rel="nofollow">enter image description here</a></p>
