게임을 만들고 있습니다.
화면을 해상도마다 따로 구분하지 않고,
가상 해상도를 두고 화면의 크기를 구해서 변환하는 방법으로
항상 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 클래스에 다양한 변환 함수를 만들어두고 모든 뷰들의 크기를 절대적으로 지정했는데요.
대부분의 폰에서는 맞아들어갑니다만...
넥서스와 같은 일부 기기에서는 화면이 잘려서 나온다고 하네요.
저 함수는 분명 소프트키 부분은 제외하고 크기를 알려줄텐데...
그래서 에뮬도 소프트키인데 에뮬에서도 맞게 돌아가구요.
넥서스가 그냥 있으면 테스트 해보면 그만인건데,
정확히 원인이 무엇인지 잘 모르겠습니다.
화면의 크기를 정확히 알아오려면 어떤 방법을 써야하나요?