How do I turn a Shape into a Region for clipping
<p>I want to set a clip region corresponding to a RoundRectShape onto my canvas, i.e. anything I draw will be clipped against the round rectangle.</p>

<p>I was looking at Canvas.clipRegion() and at Region itself and it seems fairly simple to set a clipping region. The problem is that I can't see any easy way of converting a round rectangle into one. I thought I might be able to construct a RoundRectShape, wrap it in a ShapeDrawable and call ShapeDrawable.getTransparentRegion() to get the region for the non visible part. Then it would be a simple matter to invert the region and set the clip region. Except getTransparentRegion() is return null so code such as the following would not work.</p>

<p>Any ideas?</p>

<pre><code>    final float radii[] = { 8, 8, 8, 8, 8, 8, 8, 8 };
    final Shape shape = new RoundRectShape(radii, null, null);
    shape.resize(getWidth(), getHeight());

    ShapeDrawable shapeDrawable = new ShapeDrawable(shape);
    final Region clipRegion = shapeDrawable.getTransparentRegion();
    clipRegion.op(shapeDrawable.getBounds(), Region.Op.DIFFERENCE);
    canvas.clipRegion(clipRegion);
</code></pre>
