• 1나루토매니아
  • 2뱅이
  • 3푸타코타
  • 4완벽그자체
  • 5해삼
  • 1뱅이
  • 2나루토매니아
  • 3알짜배기
  • 4뱅이
  • 5빙그레우유
ZXing 바코드 스캔부분 크기 조절하기.
연속출석 :
1일 랭킹 : 399위 중장7
45%
45% (1541 /3455)
  • 댓글 0 |
  • 추천 0 |
  • 조회 5495 |
  • 2012-08-10 (금) 17:29
    바코드 스캐너 API로 Zxing을 많이들 사용하실거에요.
    가로모드가 기준인데다가 가로 세로 크기를 기준으로 리사이징 하고,
    ImageView를 컨트롤 하는게아니라.
    surfaceView에다가 투명 레이아웃을 drawRect라는것을 4개그려
    중복되지 않는 부분을 캡처하는 방식으로 되어 있어요.
    그래서 이부분을 수정하려면
    총 8곳을 수정해야 되죠.
    수정을 할곳은 ViewfinderView.java라는 파일이 있는 부분인데
    여기서.
    ///comgooglezxingclientandroidViewfinderView.java 입니다.
    91.
    // 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); //세로 오른쪽선 canvas.drawRect(0, frame.bottom + 1, width, height, paint); //가로 아랫선
    이부분은 화면 전체 뒷배경에 마스크를 씌우는 작업이에요.
    =============
    ==== === 이렇게 검은색으로 칠해진 부분을 처리하는 거죠.
    =============
    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을 수정하시면되고
    여기에도 위쪽값은 -, 아래쪽값은 +가 됩니다.
    103.
    // Draw a two pixel solid black border inside the framing rect
    paint.setColor(frameColor);
    canvas.drawRect(frame.left, frame.top, frame.right + 1, frame.top + 2, paint);
    canvas.drawRect(frame.left, frame.top + 2, frame.left + 2, frame.bottom - 1, paint);
    canvas.drawRect(frame.right - 1, frame.top, frame.right + 1, frame.bottom - 1, paint);
    canvas.drawRect(frame.left, frame.bottom - 1, frame.right + 1, frame.bottom + 1, paint);
    이부분은 안쪽의 스캔되는 영역을 설정하는건데.
    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 로 받아오기 때문에 따로 수정할건
    없습니다.
    그럼 즐코딩 되시길.


    [이 게시물은 더어플님에 의해 2016-07-12 15:23:56 개발 꿀팁에서 복사 됨]
    댓글을 작성하시려면 로그인을 하셔야지만 작성가능합니다. [로그인하기] [회원가입하기]
    공지글 이거슨 꿀팁!! 작성 가이드 v1.1 (2013-11-13) +174 더어플 13/03/12 146173
    스마트폰을 더 스마트하게 사용하는 방법 4가지
    조회 5183
    추천 13
    댓글 21
    13.03.18 09:02
    GNCkorea
    ViewPager의 아이템 얻어오기.
    조회 5198
    추천 1
    댓글 0
    12.08.10 17:22
    GNCkorea
    팬택 스카이 베가 레이서2 - 음성인식 기능과 베가 클라…
    조회 5227
    추천 2
    댓글 2
    12.08.01 14:43
    GNCkorea
    LG 옵티머스 LTE2 - 기기정보
    조회 5235
    추천 1
    댓글 1
    12.07.31 22:41
    GNCkorea
    이클립스 내에서 안드로이드 제공하는 소스 난독화(ProG…
    조회 5280
    추천 0
    댓글 0
    12.08.07 15:35
    GNCkorea
    폰의 하드웨어 제어관련 혹은 하드웨어접근관련 앱 제작…
    조회 5297
    추천 1
    댓글 0
    12.08.10 17:33
    GNCkorea
    갤럭시S3 LTE - 그래픽 및 배터리 시간 테스트
    조회 5308
    추천 1
    댓글 2
    12.07.31 23:03
    GNCkorea
    아이패드 충전/데이터 케이블 구입시 주의사항
    조회 5322
    추천 0
    댓글 0
    12.08.01 20:41
    GNCkorea
    OS X 10.8 마운틴 라이온을 손쉽게 USB 드라이브 또는 D…
    조회 5399
    추천 1
    댓글 1
    12.07.27 13:23
    GNCkorea
    ZXing 바코드 스캔부분 크기 조절하기.
    조회 5497
    추천 0
    댓글 0
    12.08.10 17:29
    GNCkorea
    팬택 스카이 베가 레이서2 - 베가 레이서2에 들어간 스…
    조회 5609
    추천 2
    댓글 2
    12.08.01 14:45
    GNCkorea
    갤럭시S3 번인현상 확인하는 방법 - 단점, 오류, 불량
    조회 5990
    추천 1
    댓글 1
    12.07.31 22:12
    GNCkorea
    갤럭시S3 LTE - 동영상 및 전면 카메라 기능 보기
    조회 6070
    추천 1
    댓글 1
    12.07.31 23:11
    GNCkorea
    [삼성갤럭시 ]갤럭시 노트의 숨겨진 기능 10가지 (NEW)
    조회 6148
    추천 3
    댓글 6
    12.09.16 16:39
    GNCkorea
    아이폰에서 아이폰 5까지… 한 눈에 보는 요소별 사양 진화
    조회 6306
    추천 0
    댓글 3
    12.09.16 19:13
    GNCkorea
    스마트빔은 안드로이드빔과 다른 기능인가요?
    조회 6359
    추천 4
    댓글 13
    13.03.18 08:40
    GNCkorea
    패턴암호 등 잃어버렸을때 해제하는 방법(팁)
    조회 6415
    추천 0
    댓글 0
    12.08.05 14:55
    GNCkorea
    Android Virtual Device(AVD) 사용법
    조회 6450
    추천 1
    댓글 0
    12.08.09 10:08
    GNCkorea
    갤럭시S II, 테이크 야누스, 이보 4G+, 아트릭스 - 무선…
    조회 6451
    추천 1
    댓글 2
    12.08.01 19:47
    GNCkorea
    갤스2 CM9 MOD - 중앙시계 및 상태바 기능 확장
    조회 6524
    추천 0
    댓글 0
    12.08.04 11:47
    GNCkorea
    아이폰 수동으로 APN 설정 및 서비스 안됨 해결 방법
    조회 6538
    추천 0
    댓글 1
    12.08.12 14:49
    GNCkorea
    옵티머스 LTE2와 스마트TV 연동하기
    조회 6615
    추천 1
    댓글 1
    12.07.29 10:55
    GNCkorea
    스마트폰으로 집에 있는 컴퓨터 사용하기 -크레이지 리…
    조회 6636
    추천 7
    댓글 16
    13.03.18 09:31
    GNCkorea
    아이폰 아이패드 속도 향상을 위한 간단한 팁
    조회 6650
    추천 0
    댓글 3
    12.08.12 14:45
    GNCkorea
    갤S2 CM9 통합패치 모음 (gyro,nfc,tstore,spn,기타등등)
    조회 6664
    추천 0
    댓글 0
    12.08.04 11:50
    GNCkorea
    맥용 아이포토 스마트 앨범을 이용해서 편리하게 사진 …
    조회 6714
    추천 0
    댓글 0
    12.07.27 13:26
    GNCkorea
    달라진 갤럭시S3 LTE의 카메라
    조회 6727
    추천 2
    댓글 2
    12.08.01 14:22
    GNCkorea
    구글 넥서스 수신된 sms/mms 저장경로 아시는 분계신가…
    조회 6740
    추천 2
    댓글 0
    12.08.10 17:00
    GNCkorea