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

화면 크기를 정확히 구하는 방법

0 추천

게임을 만들고 있습니다.

화면을 해상도마다 따로 구분하지 않고,

가상 해상도를 두고 화면의 크기를 구해서 변환하는 방법으로

항상 9:16의 비율로 고정하고 있습니다.

(가로가 길면 가로에 여백을 두고 세로가 길면 세로에 여백을 둠)

 

코드 방식은 다음과 같이 기술했습니다.

 

 

Point p = new Point();
Point convertP = new Point();
p.x = getResources().getDisplayMetrics().widthPixels;
p.y = getResources().getDisplayMetrics().heightPixels;
 
convertP.x = p.x;
convertP.y = p.y;
 
if(p.x * 16 > p.y * 9)
  convertP.x = p.y * 9 / 16;
else
  convertP.y = p.x * 16 / 9;
 
Screen.width = convertP.x;
Screen.height = convertP.y;
 
 
 
이후에 Screen 클래스에 다양한 변환 함수를 만들어두고 모든 뷰들의 크기를 절대적으로 지정했는데요.
대부분의 폰에서는 맞아들어갑니다만...
넥서스와 같은 일부 기기에서는 화면이 잘려서 나온다고 하네요.
저 함수는 분명 소프트키 부분은 제외하고 크기를 알려줄텐데...
그래서 에뮬도 소프트키인데 에뮬에서도 맞게 돌아가구요.
 
넥서스가 그냥 있으면 테스트 해보면 그만인건데,
정확히 원인이 무엇인지 잘 모르겠습니다.
화면의 크기를 정확히 알아오려면 어떤 방법을 써야하나요?
Jinthree (8,980 포인트) 님이 2014년 6월 17일 질문

1개의 답변

0 추천
 
채택된 답변
http://stackoverflow.com/questions/14341041/how-to-get-real-screen-height-and-width

모든 버전에서 안전하게 동작하는 것은 CorayThan 의 답변을 보면 됩니다.
익명사용자 님이 2014년 6월 17일 답변
Jinthree님이 2014년 6월 17일 채택됨
아쉽게도 해당 답변도 완벽하다고는 볼 수 없다고 말하고 있군요.
하지만 일단 제 단일 방식보다는 범용성이 훨씬 높은건 확실하네요.
답변 감사합니다.
...