I need to draw a cloud like below.
I tried to use this code without success:
 private Path cloudPath(float xRatio, float yRatio) {
        xRatio = (float) (xRatio / 500.0);
        yRatio = (float) (yRatio / 505.0);
        Path cloudPath = new Path();
        cloudPath.moveTo(321.639f * xRatio, 198.999f * yRatio);
        cloudPath.cubicTo(358.117f * xRatio, 134.634f * yRatio, 343.492f * xRatio, 185.892f * yRatio, 358.117f * xRatio, 161.971f * yRatio);
        cloudPath.cubicTo(283.117f * xRatio, 59.634f * yRatio, 358.117f * xRatio, 93.213f * yRatio, 324.539f * xRatio, 59.634f * yRatio);
        cloudPath.cubicTo(278.695f * xRatio, 59.762f * yRatio, 281.633f * xRatio, 59.634f * yRatio, 280.158f * xRatio, 59.677f * yRatio);
        cloudPath.cubicTo(199.746f * xRatio, 0f * yRatio, 269.002f * xRatio, 25.28f * yRatio, 237.327f * xRatio, 0f * yRatio);
        cloudPath.cubicTo(133.073f * xRatio, 34.254f * yRatio, 172.272f * xRatio, 0f * yRatio, 147.953f * xRatio, 13.512f * yRatio);
        cloudPath.lineTo(133.073f * xRatio, 34.254f * yRatio);
        cloudPath.cubicTo(98.117f * xRatio, 25.626f * yRatio, 122.635f * xRatio, 28.745f * yRatio, 110.741f * xRatio, 25.626f * yRatio);
        cloudPath.cubicTo(23.117f * xRatio, 100.626f * yRatio, 56.696f * xRatio, 25.626f * yRatio, 23.117f * xRatio, 59.205f * yRatio);
        cloudPath.cubicTo(30.651f * xRatio, 133.426f * yRatio, 23.117f * xRatio, 112.389f * yRatio, 25.825f * xRatio, 123.518f * yRatio);
        cloudPath.lineTo(30.651f * xRatio, 133.426f * yRatio);
        cloudPath.cubicTo(0f * xRatio, 193.916f * yRatio, 12.065f * xRatio, 147.077f * yRatio, 0f * xRatio, 169.087f * yRatio);
        cloudPath.cubicTo(75f * xRatio, 268.915f * yRatio, 0f * xRatio, 235.337f * yRatio, 33.579f * xRatio, 268.915f * yRatio);
        cloudPath.cubicTo(83.329f * xRatio, 268.458f * yRatio, 77.815f * xRatio, 268.915f * yRatio, 80.595f * xRatio, 268.76f * yRatio);
        cloudPath.lineTo(83.329f * xRatio, 268.458f * yRatio);
        cloudPath.cubicTo(151.5f * xRatio, 304.205f * yRatio, 98.323f * xRatio, 290.064f * yRatio, 123.265f * xRatio, 304.205f * yRatio);
        cloudPath.cubicTo(201.273f * xRatio, 287.582f * yRatio, 170.173f * xRatio, 304.205f * yRatio, 187.405f * xRatio, 298.02f * yRatio);
        cloudPath.cubicTo(249.239f * xRatio, 304.205f * yRatio, 214.467f * xRatio, 297.992f * yRatio, 231.127f * xRatio, 304.205f * yRatio);
        cloudPath.cubicTo(326.739f * xRatio, 226.705f * yRatio, 292.041f * xRatio, 304.205f * yRatio, 326.739f * xRatio, 269.507f * yRatio);
        cloudPath.cubicTo(321.639f * xRatio, 198.999f * yRatio, 326.739f * xRatio, 216.943f * yRatio, 324.934f * xRatio, 207.602f * yRatio);
        cloudPath.close();
        cloudPath.moveTo(321.639f * xRatio, 198.999f * yRatio);
        return cloudPath;
    }
ondraw method:
  canvas.drawPath(path, paint);
I need to draw this shape using Path, we can't use bitmap instead of Path. Because I need to remove that multiple shape from stack, I need to develop this shape in Path Object.
I have also used below code, but drawing start from top position like from 0,0. I have drawn this shape in onActionMove Method ontouch in canvas.
 public Path draw(int x, int y, int w, int h, int color) {
        Path t = new Path();
        Matrix m = new Matrix();
        Paint p = new Paint();
        p.setColor(color);
        p.setAntiAlias(true);
        // original size of path
        float ow = 200f;
        float oh = 200f;
        float od = (w / ow < h / oh) ? w / ow : h / oh;
        m.reset();
        m.setScale(od, od, w / ow, h / oh);
        t.reset();
        t.moveTo(x, y);
        t.moveTo(230.4f, 389.57f);
        t.cubicTo(194.87f, 389.57f, 160.53f, 375.34f, 135.23f, 350.32f);
        t.cubicTo(126.79f, 353.95f, 117.63f, 355.87f, 108.39f, 355.87f);
        t.cubicTo(71.04f, 355.87f, 40.66f, 325.48f, 40.66f, 288.12f);
        t.cubicTo(40.66f, 284.13f, 41.04f, 280.08f, 41.79f, 276.03f);
        t.cubicTo(15.52f, 256.6f, 0.0f, 226.05f, 0.0f, 193.21f);
        t.cubicTo(0.0f, 141.56f, 38.98f, 97.72f, 89.71f, 91.12f);
        t.cubicTo(102.41f, 57.89f, 134.06f, 35.92f, 170.07f, 35.92f);
        t.cubicTo(201.51f, 35.92f, 230.25f, 53.09f, 245.33f, 80.28f);
        t.cubicTo(256.19f, 76.53f, 267.51f, 74.62f, 279.11f, 74.62f);
        t.cubicTo(336.25f, 74.62f, 382.74f, 121.1f, 382.74f, 178.24f);
        t.cubicTo(382.74f, 180.64f, 382.63f, 183.08f, 382.42f, 185.66f);
        t.cubicTo(408.09f, 195.71f, 425.49f, 220.71f, 425.49f, 248.69f);
        t.cubicTo(425.49f, 288.36f, 390.96f, 320.14f, 350.76f, 316.07f);
        t.cubicTo(327.63f, 360.91f, 281.04f, 389.57f, 230.4f, 389.57f);
        t.transform(m);
        return t;
    }
 private void onActionMove(MotionEvent event) {
        float x = event.getX();
        float y = event.getY();
        Path path = this.getCurrentPath();
                        path.reset();
                        path.addPath(draw((int) startX, (int) startY, (int) x, (int) y, 0xffff8000));
    }
@Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
   canvas.drawPath(path, paint);
}

