이부분은 화면 전체 뒷배경에 마스크를 씌우는 작업이에요.
=============
==== === 이렇게 검은색으로 칠해진 부분을 처리하는 거죠.
=============
canvas.drawRect(0, 0, width, frame.top, paint); --->> 이부분은 0,0 < 화면의 가장 최상위의 왼쪽부분을 시작으로 기준점을 잡고
width < 화면의 최대 가로 길이 입니다.
frame.top <- 이부분은 사각형의 Y좌표인데. 보통 화면 최대 Y좌표에서 50~60dp
정도에 위치해 있습니다.
이부분은 아까 위의 ================== 이부분을 채색하는겁니다.
그리고 아래 부분은 canvas.drawRect(0, frame.top, frame.left, frame.bottom + 1, paint); .left .bottom 이렇게 되어 있는데
left는 화면기준으로 세로의 길이를 받아옵니다.(Top과 마찬가지로 최대치에서
50~60dp 정도 의 위치를 기준으로 잡습니다.)
bottom은 y좌표에서 하단을 가리키며, 이 좌표 역시 가장 하단에서 일정수치
떨어져잇습니다.
예를들어 나는 스캔되는 부분을 가로모드 기준으로 반으로 줄이고 싶다.(가로길이를)
세로 왼쪽/오른쪽선의 위치를 안쪽으로 땡기면 되겠죠?
frame.left, frame.right가 x좌표가 되므로 이부분을 각각 /2로 줄이고 여기에 늘리고 싶은 만큼의
픽셀치를 추가합니다. /2가 되면 마스크 크기에서 반정도 줄어드는데, 이게 너무 작다고 느껴지면
+ 픽셀 값을 해주시면됩니다.
왼쪽은 -값 오른쪽은 +값입니다.
반대로 세로 크기를 수정하려면 역시 top과 bottom을 수정하시면되고
여기에도 위쪽값은 -, 아래쪽값은 +가 됩니다.
이부분은 안쪽의 스캔되는 영역을 설정하는건데.
zxing의 스캐너를 잘보시면 스캔되는영역 바깥쪽에 얇은 검은색 선이 있습니다.
그 선들이 바로 위의 값들이죠. 선처럼 보이지만 사실 사각형을 이어 붙힌 거죠.
각각의 선들은 위의 마스크들의 값들과 같고.값들도 역시 같습니다.
주의할점은 선의 굵기인데 크기 조절을 위해 +한다고 하셨을 때 이값들이 경계가 되는 점들에서
+1~+2정도 차이나게 해주셔야됩니다. 그렇지 않으면 상당히 굵은 선이 생기면서
그부분을 스켄하지 않게 됩니다.
110.
// Draw a red "laser scanner" line through the middle to show decoding is active paint.setColor(laserColor); paint.setAlpha(SCANNER_ALPHA[scannerAlpha]); scannerAlpha = (scannerAlpha + 1) % SCANNER_ALPHA.length; int middle = frame.height() / 2 + frame.top; canvas.drawRect(frame.left + 2, middle - 1, frame.right - 1, middle + 2, paint); 이부분은 레이져선... 을 표현하는 부분인데 저는 필요가 없는거 같아서 빼두긴했습니다.
이부분은 화면을 기준으로 중앙값을 잡고 그 중앙값에 반짝이는 에니메이션이 들어가는
사각형을 넣습니다. ----------------------이런정도의 굵기의..
길이변경은 위와 같습니다.
변경을 하는건 여기까지이고 레이아웃은 이 클레스를 draw 로 받아오기 때문에 따로 수정할건
없습니다.
댓글을 작성하시려면 로그인을 하셔야지만 작성가능합니다.
[로그인하기] [회원가입하기]