第一步
//zing 扫描码
implementation 'com.journeyapps:zxing-android-embedded:3.6.0'
第二步
CustomZxingView
public class CustomZxingView extends ViewfinderView {
public int laserLinePosition = 0;
public float[] position = new float[]{0f, 0.5f, 1f};
public int[] colors = new int[]{0xff0699e6, 0xff0699e6, 0xff0699e6};
public LinearGradient linearGradient;
public CustomZxingView(Context context, AttributeSet attrs) {
super(context, attrs);
}
/**
* 重写draw方法绘制自己的扫描框
*
* @param canvas
*/
@Override
public void onDraw(Canvas canvas) {
refreshSizes();
if (framingRect == null || previewFramingRect == null) {
return;
}
Rect frame = framingRect;
Rect previewFrame = previewFramingRect;
int width = canvas.getWidth();
int height = canvas.getHeight();
//绘制4个角
paint.setColor(Color.parseColor("#139D57"));//定义画笔的颜色
canvas.drawRect(frame.left, frame.top, frame.left + 100, frame.top + 10, paint);
canvas.drawRect(frame.left, frame.top, frame.left + 10, frame.top + 100, paint);
canvas.drawRect(frame.right - 100, frame.top, frame.right, frame.top + 10, paint);
canvas.drawRect(frame.right - 10, frame.top, frame.right, frame.top + 100, paint);
canvas.drawRect(frame.left, frame.bottom - 10, frame.left + 100, frame.bottom, paint);
canvas.drawRect(frame.left, frame.bottom - 100, frame.left + 10, frame.bottom, paint);
canvas.drawRect(frame.right - 100, frame.bottom - 10, frame.right, frame.bottom, paint);
canvas.drawRect(frame.right - 10, frame.bottom - 100, frame.right, frame.bottom, paint);
// Draw the exterior (i.e. outside the framing rect) darkened
paint.setColor(resultBitmap != null ? resultColor : maskColor);
canvas.drawRect(0, 0, width, frame.top, paint);
canvas.drawRect(0, frame.top, frame.left, frame.bottom + 1, paint);
canvas.drawRect(frame.right + 1, frame.top, width, frame.bottom + 1, paint);