Android 如何将形状转换为用于剪裁的区域

Android 如何将形状转换为用于剪裁的区域,android,Android,我想在画布上设置一个与RoundRectShape对应的剪辑区域,也就是说,我画的任何东西都将根据圆形矩形进行剪辑 我在看Canvas.clipRegion()和区域本身,设置剪辑区域似乎相当简单。问题是,我看不到任何将圆形矩形转换为圆形矩形的简单方法。我想我可能可以构造一个RoundRectShape,将其包装在ShapedRavable中,然后调用ShapedRavable.getTransparentRegion()来获取不可见部分的区域。然后,反转区域并设置剪辑区域将是一件简单的事情。除

我想在画布上设置一个与RoundRectShape对应的剪辑区域,也就是说,我画的任何东西都将根据圆形矩形进行剪辑

我在看Canvas.clipRegion()和区域本身,设置剪辑区域似乎相当简单。问题是,我看不到任何将圆形矩形转换为圆形矩形的简单方法。我想我可能可以构造一个RoundRectShape,将其包装在ShapedRavable中,然后调用ShapedRavable.getTransparentRegion()来获取不可见部分的区域。然后,反转区域并设置剪辑区域将是一件简单的事情。除此之外,getTransparentRegion()返回null,因此以下代码将无法工作

有什么想法吗

    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);

我试图做类似的事情;这个关于另一个问题的回答帮助了我: