自定义相机取景框

在项目中须要对上传身份证,就须要实现只拍摄指定区域,因此就要往相机上加一个蒙版 而且要留出身份证同比例的透明框。html

预览结果:canvas


今天就只写这个蒙版框,关于这个其实你们应该都能写出来 ,我相信也有同志们准备cavas drawRecf() 分上下左右4块来实现。若是是这样写的话,就麻烦了。code

就我本身而言 实现这个能够有2种方法:htm

一、cavas.clipRect() 方法 ,该方法是裁剪画布,也就是设置画布的显示区域。blog

     

canvas.clipRect(x, y, width , height, Region.Op.XOR);//设置显示范围  x,y  是取景框的起点坐标  width,height 是取景框的终点坐标  Region.Op.XOP 的参数就是取景框之外的区域

canvas.drawColor(Color.parseColor("#7fFFFFFF")); 设置取景框之外的颜色    7fFFFFFF 中7f表明的是透明度  FFFFFF是颜色值

两句蒙版就完成ip

二、path.addRect()方法,可是这个方法 须要API19才能用 。io

paint = new Paint();
 paint.setColor(Color.WHITE); 设置画笔白色 透明
 paint.setAlpha(125);
 
path.addRect(0, 0, width,height, Path.Direction.CCW);  CCW 表示逆时针  
path2.addRect(x, y, width, height , Path.Direction.CCW);
path.op(path2, Path.Op.XOR);  2个path取不相交部分
canvas.drawPath(path, paint);