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

폰 기종별 비트맵의 처리

0 추천

배경이 되는 이미지 위에

비트맵을 그리려고 합니다

이것이 배경이미지라하면

공간을 터치했을 때

이런식으로 그려주려고합니다.

 

최종적인 목표는 저렇게 터치가 일어났을 때

터치된 공간에 마련된 정보를 바탕으로 액티비티를 호출하려고 하는 것인데요

(ex 지하철어플에서 역명을 터치했을 때)

 

 

지금 쓰고 있는 방식은

배경이미지의 크기를 가져와서 그 크기만큼의 비트맵을 만들고

그 비트맵 위에 Point 점을 찍고 그 점이 눌렸는지를 판별하고 있습니다.

(점은 규칙없이 일일이 좌표값 확인해가면서 찍었습니다)

 

근데 폰의 기종이 달라지니까

점이 완전 이상하게 찍히더군요

 

이런식으로...

 

기기의 해상도 문제때문인 거 같은데

이런 경우에는 어떻게 처리해야하는건가요?>ㅠㅠㅠ

 

postpo22 (250 포인트) 님이 2015년 10월 8일 질문

2개의 답변

0 추천
 
채택된 답변
좌표 x, y에 보정값을 계산해주세요.

정상적으로 나오던 기기의 해상도값을 기본값으로 하고 기기가 바뀌면

배율을 계산해서 x, y터치 값을 보정해주면 됩니다.

//해상도 가져오기

WindowManager manager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Display display = manager.getDefaultDisplay();
theScreenResolution = new Point();
display.getSize(theScreenResolution);

// 기본 해상도 지정(정상적으로 나오는 기기의 해상도)

ex) int baseScreenResolutionX = 1280;

// 보정값 구하기(기본 해상도에 대한 배율 구하기)

double ratioX = baseScreenResolutionX / theScreenResolution.x;

// 터치 값에 보정값 계산하여 사용

ex) int x = (int) event.getX() * ratioX;
띠깔라1 (4,200 포인트) 님이 2015년 10월 8일 답변
postpo22님이 2015년 10월 8일 채택됨
0 추천
어떠한 상황에 처하신지 자세히 모르지만

말씀해주신 상황으로 볼때...

저라면 비트맵위에 레이아웃을 하나 더올리지 않을까 싶습니다.
ThisPlus (46,920 포인트) 님이 2015년 10월 8일 답변
...