我已经阅读了 20 多个问题/答案,但我仍然无法得到我想要的。我想在矩形内切一个圆,如下所示:
这是我的代码:
@Override
protected void onDraw(Canvas canvas) {
Paint paint = new Paint();
paint.setStyle(Paint.Style.FILL);
paint.setARGB(180, 0, 0, 0);
canvas.drawRect(0, 0, getWidth(), getHeight(), paint);
Path circularPath = new Path();
circularPath.addCircle(getWidth() / 2, getHeight() / 2, radius, Path.Direction.CCW);
canvas.clipPath(circularPath, Region.Op.REPLACE);
canvas.drawColor(0x00000000);
}
我的背景 ( setARGB
) 显示正确,但没有任何内容被剪裁。我还通过调用构造函数尝试了除强制软件光栅化Op
之外的其他值REPLACE
(正如我在某些 Android 版本上读到的clipPath
不支持某些s) ,但无济于事。如何达到预期的效果?Op
setLayerType(LAYER_TYPE_SOFTWARE, null);
注意:我的最低 SDK 版本是 15,所以我不需要支持低于 4.0 的任何东西。