尝试使用 canvas.clipPath 在 canvas 上绘制

Trying to draw on canvas using canvas.clipPath

我正在尝试在变暗的背景上画圆圈,试图达到这样的效果 - 这实际上适用于我的 Samsung s4 和 Samsung tab 3,但不适用于 s2 和某些模拟器(所有周围的视图组都变暗,并且在椭圆形内部也是如此,似乎它没有看到我的 circleSelectionPath)。请帮我找到让它在每台设备上工作的方法

    final Paint paint = new Paint();
    paint.setColor(Color.parseColor("#77000000"));

        Path circleSelectionPath = new Path();
        mRectF.set(l, t, r, b);
        circleSelectionPath.addOval(mRectF, Path.Direction.CW);
        canvas.clipPath(circleSelectionPath, Region.Op.XOR);
        canvas.drawRect(bitmapRect.left, bitmapRect.top, bitmapRect.right, bitmapRect.bottom, paint );
        canvas.restore();

bitmapRect 包含我的视图组尺寸(例如:0,0, 500,500)

知道了。 Android 在 canvas.clipRect 中有一个错误,他们已经对其进行了优化,但是在某些 android api 上,优化后它简单地不起作用)我发现了一个问题。

所以修复 - 禁用此视图的 hrdware 加速

    (Build.VERSION.SDK_INT <= 19 && mCropShape == CropImageView.CropShape.OVAL) {
        //TURN off hardware acceleration
        setLayerType(View.LAYER_TYPE_SOFTWARE, null);
    }