마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

아래의 라이브러리에서 사진과 같은 기능이 있는지없는지 잘 모르겠습니다 ㅜ

0 추천

 

안녕하세요.

제가, 줌 관련해서 라이브러리를 찾고 있습니다. ( 아래의 사진과 같이 왼쪽 상단에 미니맵이 나타나면서

줌을 할 수 있도록이요 .. )  그래서 검색해본 결과 아래의 블로그를 찾았습니다.

이 블로그에 들어가보면, 확대를 하고 축소를 할수 있는데 가장 중요한것은..

아래의 사진처럼 왼쪽 상단에 미니맵에 액티비티의 화면이 나타나야 하는데.. 그 방법을 모르겠습니다.

어떻게 지정을 해줘야, 미니맵에 XML의 내용이 축소되어서 나타나게 될까요 ㅠ

오랜기간 찾다보니까 아래의 라이브러리로 하는게 아닌지.. 방법을 좀 알고싶습니다 ㅠ

 

http://m.blog.naver.com/tkddlf4209/220734280748

 

 

 

 

Kind카인드 (3,600 포인트) 님이 2016년 12월 6일 질문
Kind카인드님이 2016년 12월 7일 수정

1개의 답변

0 추천
public void setMiniMapEnabled(final boolean showMiniMap) {
 this.showMinimap = showMiniMap;
 }

다행히도 해당 클래스 내부에 메소드가 있네요

익명사용자 님이 2016년 12월 7일 답변
답변 감사드립니다 ㅠ ㅠ 말씀해주신 부분으로 미친듯이 제 코드에 적용을 해보려고 하는데 ㅠ ㅠ .. 말씀해주신 setMiniMapEnabled쪽에 매개변수로는 boolean 값인데..  아래의 코드에 맨 아래쪽에 zoomView.setMiniMapEnabled(true);를
선언을 해보았는데.. 단순히 이렇게 하는건 아닌거같고.. 분명, 레이아웃이
미니맵에 나타나야 하는데.. 어떻게 해야할까요.. ㅜ




                LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);

                ZoomView zoomView = new ZoomView(Seat.this);
                zoomView.addView(mSeatView);
                zoomView.setLayoutParams(layoutParams);
                zoomView.setMiniMapEnabled(true); // 좌측 상단 검은색 미니맵 설정
                zoomView.setMaxZoom(4f); // 줌 Max 배율 설정  1f 로 설정하면 줌 안됩니다.
                zoomView.setMiniMapCaption("Seat MiniMap"); //미니 맵 내용
                zoomView.setMiniMapCaptionSize(25); // 미니 맵 내용 글씨 크기 설정
                zoomView.setMiniMapEnabled(true);
글의 아래쪽에 수정을 통해서 , 제 화면의 사진을 올려보았습니다.

미니맵의 사진도 좀 작을뿐더러 ㅜ 말씀해주신 인자값이 boolean인 함수에

어떻게 적용을 시켜야 화면에 현재 액티비티의 내용이 나오게 만들수 있을까요..

액티비티의 이름은 activity_seat 입니다.
https://github.com/Polidea/android-zoom-view/blob/master/src/pl/polidea/view/ZoomView.java

위사진의 경우 해당 라이브러리를 수정한 버전같습니다.
jar 파일을 제거하시고 ZoomView.java
파일을 추가하신후
423번째줄에서
Bitmap resize = Bitmap.createScaledBitmap(ch, dx - 0.5f * w / zoom, dy - 0.5f * h / zoom, true);
로 리사이징후 canvas.drawBitmap(resize, 0, 0, null);
추가하여 사용하셔야 될것 같네요
말씀하신.. 리사이징 이라는것이
아래의 줄을 423번째에 추가하고,
Bitmap resize = Bitmap.createScaledBitmap(ch, dx - 0.5f * w / zoom, dy - 0.5f * h / zoom, true); 그 아래에 canvas.drawBitmap(resize, 0, 0, null);를

추가하시라는 말씀이신가요..?

현재 말씀하신대로 jar파일을 제거했고, ZoomView.java 라는 class를 하나
다시 새로 만들어서, 그대로 싸이트에 있는것과 똑같이 옮긴다음에

423번째 줄에

아래와 같이 썼는데,  말씀해주신 Bitmap resize = Bitmap.createScaledBitmap(ch, dx - 0.5f * w / zoom, dy - 0.5f * h / zoom, true);... 줄에서 빨간줄

에러가 납니다.. 에러의 내용은 원글의 아래쪽에 사진으로 붙여보았습니다 ㅠ



     canvas.drawRect(dx - 0.5f * w / zoom, dy - 0.5f * h / zoom, dx + 0.5f * w / zoom, dy + 0.5f * h / zoom, p);

                         Bitmap resize = Bitmap.createScaledBitmap(ch, dx - 0.5f * w / zoom, dy - 0.5f * h / zoom, true);
                         canvas.drawBitmap(resize, 0, 0, null);
                     
                         canvas.translate(-10.0f, -10.0f);
/ 연산을 하여서 자동으로 float형으로 캐스팅된 상태입니다.
비트맵 리사이징의 경우 인자값으로 int형을 구하므로 인트형으로 캐스팅해주시면 됩니다
(int)(dx - 0.5f * w / zoom) or Math.abs(dx - 0.5f * w / zoom)
아하!.. 답변 감사드립니다 ㅠ

이 문제로 여기저기 정말 많이 찾아보았는데 답이 워낙

안달려서 ㅠ 익명사용자님의 답변을 기다릴수밖에 없네요..

그런데, 첫째로 말씀하신것처럼 안드로이드의 상단의 project에서

lib에서 라이브러리 파일을 지웠고, 안드로이드에서 해당폴더의 경로로

들어가서 라이브러리 파일을 지웠는데도..

프로그램을 실행할때 원글의 맨 아래쪽과 같은 내용이 뜨는데..

어디가 잘못된지 한번 찝어주실수 있을까요 ..
http://docko.tistory.com/entry/안드로이드-스튜디오-라이브러리jar-파일-추가하기
Open Module Settings =>Project Structure=>Dependencies에서 jar경로를 제거하세요
오오 ㅠ 답변 감사드립니다.
말씀하신대로 바꿔보니까, 해결 되었습니다 ㅠ 그런데 실행을 해보니까..

 Bitmap resize = Bitmap.createScaledBitmap(ch, (int)(dx - 0.5f * w / zoom), (int)(dy - 0.5f * h / zoom), true);

여기 줄에서 아래와 같은 에러가 뜹니다 ㅠ

E/AndroidRuntime: FATAL EXCEPTION: main
                  Process: ex.real_project, PID: 26478
                  java.lang.IllegalArgumentException: width and height must be > 0
    at ex.real_project.ZoomView.dispatchDraw(ZoomView.java:487)
int width = (zoom, dx + 0.5f * w / zoom) - (dx - 0.5f * w / zoom)
int height = (dy + 0.5f * h / zoom) - (dx - 0.5f * w / zoom)
Bitmap resize = Bitmap.createScaledBitmap(ch, width, height, true);
답변 감사드립니다.. 말씀해주신것을, 그대로 써보았는데 ㅠ ㅠ 어디가

잘못되었는지.. 위의 원글의 아래쪽의 사진 2개를 봐주시면 정말 감사드리겠습니다.

처음에 써주신 코드에서 맨 오른쪽에 ;(따옴표)를 쓰시는것을 깜빡하신것 같아서 제가 썻더니만, 원글의 가장 마지막사진처럼 나오고, 말씀해주신 소스를
써보자니, 첫번째 사진처럼 됩니다 ㅠ
이런...실수를
int width = (int)((dx + 0.5f * w / zoom) - (dx - 0.5f * w / zoom))
오오.. 답변 감사드립니다 ㅠ

말씀해주신대로 하니까, 줌 관련된 부분 가졌을떄, 미니맵에 액티비티의

내용이 뜹니다.

그런데, 1초만에 사라지고 아래와 같은 에러가 다시 뜹니다 ㅠ

자꾸 정말 죄송합니다.. 이 질문을 어디에도 올려도 이렇게 자세하게

답변을 달아주시는분이 없어서 계속 의존하게 되네요 ㅠ

    Bitmap resize = Bitmap.createScaledBitmap(ch, width, height, true);

위의 줄에서  아래와 같은 에러가 뜹니다.

E/AndroidRuntime: FATAL EXCEPTION: main
                  Process: ex.real_project, PID: 28739
                  java.lang.NullPointerException: Attempt to invoke virtual method 'int android.graphics.Bitmap.getWidth()' on a null object reference
                      at android.graphics.Bitmap.createScaledBitmap(Bitmap.java:605)
                      at ex.real_project.ZoomView.dispatchDraw(ZoomView.java:491)

확실히, 나오긴 나옵니다 그런데 금방 꺼져버립니다 ㅠ
Bitmap resize = Bitmap.createScaledBitmap(ch, 200, 200, true);
또 다시 아래와 같은 에러가 뜹니다 ㅜ

E/AndroidRuntime: FATAL EXCEPTION: main
                  Process: ex.real_project, PID: 29106
                  java.lang.NullPointerException: Attempt to invoke virtual method 'int android.graphics.Bitmap.getWidth()' on a null object reference
                      at android.graphics.Bitmap.createScaledBitmap(Bitmap.java:605)
                      at ex.real_project.ZoomView.dispatchDraw(ZoomView.java:491)
제 원글의 맨 아래쪽에, 현재 미니맵의 상황을 올려보았습니다.

너무 창이 빨리 꺼지는 바람에, 현재 상태는 못올렸고, 이전의 라이브러리의

경우의 사진을 올렸습니다. 현재 사진도 위와 같은데, 미니맵이 너무 작은것

같긴 한데.. 일단 자꾸 꺼지네용 ㅠ
391번째줄에서 ch = null;
비트맵을 제거하는 코드 지워보세요
네 말씀하신  ch = null; 이줄을 지워보았습니다.

그랬더니, 원글의 아래쪽 2개의 사진처럼 나왔습니다.

첫번째 사진같은 경우에는, 클릭함과 동시에, 그게 미니맵에 나타나는데

저같은 경우에는 선택을 해도, 미니맵에 화면이 고정되어 있습니다 ㅠ

라이브러리 하나만 추가하면 될줄 알았는데 그게 아니고 엄청나게

어렵네요 ㅠ ㅠ
오늘 수고하셨습니다.
이만하시고 내일 힘내서 다시 해봅시다!!!
내일 새글 올려주세요
답변 감사드립니다.

감사합니다. 라이브러리 적용시키기가 어렵네용
익명 사용자님 글을 좀 더 수정해서 다시 올려보았습니다.

라이브러리에서 지원을 안해줘서 그러는건지 .. 정리된 라이브러리를 고쳐가면서

해야할줄은 생각치 못했었는데.. 에고..

http://www.masterqna.com/android/71999/%EC%95%84%EB%9E%98%EC%9D%98-%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC%EC%97%90%EC%84%9C-%EC%82%AC%EC%A7%84%EA%B3%BC-%EA%B0%99%EC%9D%80-%EA%B8%B0%EB%8A%A5%EC%9D%B4-%EC%9E%88%EB%8A%94%EC%A7%80%EC%97%86%EB%8A%94%EC%A7%80-%EC%9E%98-%EB%AA%A8%EB%A5%B4%EA%B2%A0%EC%8A%B5%EB%8B%88%EB%8B%A4-%E3%85%9C
...