使用颜色填充布局,但某些子视图除外

时间:2015-07-23 15:20:08

标签: android

我想在布局上显示叠加层,此叠加层具有半透明的颜色,填充视图但有一些例外。这些异常将是一些具有透明色的形状,它将突出显示此叠加层所覆盖的背景视图。

我的问题是如何设置这个半透明的颜色,它将用一些颜色填充父视图,并在此父视图中包含一些异常区域。

1 个答案:

答案 0 :(得分:0)

答案是使用“canvas.clipPath()”,这里是示例代码

public class CircularClipView implements View {

    final Path path = new Path();

    public CircularClipView(final Context context, final AttributeSet attrs, final int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }


    @Override
    protected void onDraw(final Canvas canvas) {
        super.onDraw(canvas);

        canvas.save();

        final int viewWidthHalf = 300;
        final int viewHeightHalf = 300;
        final int radius = 100;

        path.addCircle(viewWidthHalf, viewHeightHalf, radius, Path.Direction.CW);
        canvas.clipPath(path, Region.Op.DIFFERENCE);
        canvas.drawColor(R.color.transparen);   //#c5000000

        canvas.restore();
    }

}