我想在布局上显示叠加层,此叠加层具有半透明的颜色,填充视图但有一些例外。这些异常将是一些具有透明色的形状,它将突出显示此叠加层所覆盖的背景视图。
我的问题是如何设置这个半透明的颜色,它将用一些颜色填充父视图,并在此父视图中包含一些异常区域。
答案 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();
}
}