가로 인치 : 가로픽셀수 / densityDpi
세로 인치 : 세로픽셀수 / densityDpi
위에서 가로,세로 인치를 알아냈으니, 피타고라스 공식에 따라 계산하면됨.
ex) 옵티머스패드
가로 픽셀수 : 1280
세로 픽셀수 : 720
densityDpi: 160
가로인치 : 1280 / 160 = 8.0
세로인치 : 720 / 160 = 4.5
최종 인치 : 약 9인치
* 사용한 API
DisplayMetrics displayMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
픽셀수 :
displayMetrics.widthPixels 와 displayMetrics.heightPixels 사용
dentisy :
displayMetrics.densityDpi사용
폰,패드 구분없이 위와 같은 공식으로 계산하면 되는지요?
위의 덧글을 봤는데요.. 아래케이스가 예외적인데.. 이것도 xdpi를 사용하지 않고 densityDpi 를 사용하면 맞지 않을까요?
아마도 densityDpi 가 240 으로 나올듯 해서요..그러면 계산식이 맞아 들어갑니다.
테이크 야누스(4.3인치)
w:540, h:960, density: 1.5
xdpi:159.48837, ydpi:160.42105, x_inch:3.3858268, y_inch:5.984252
display size:6.8756885530551255
densityDpi를 사용한다고 해도 맞지 않는 경우는 발생합니다.
링크에 달린 댓글에 보시면 알겠지만
갤럭시 탭의 경우 dpi 값은 대략 170 (xdpi:168.89351, ydpi:169.33333) 입니다.
하지만 갤럭시 탭의 경우 hdpi라서 densityDpi는 240이 됩니다.
densityDpi 는 ldpi는 120, mdpi는 160, hdpi는 240, xhdpi 320으로 고정 시킵니다.
제 생각에는 densityDpi 를 사용하면 단말별로 더 많이 차이가 날 것 같습니다.
예를 들면
갤럭시 노트 5.3인치
x:800, y:1280 density:2, densityDpi:320
x_inch : 800/320 = 2.5
y_inch : 1280/320 = 4
display size : 4.71699
갤럭시 탭10.1 10.1인치
x:800, y:1280 density:1, densityDpi:160
x_inch : 800/160 = 5
y_inch : 1280/160 = 8
display size : 9.43
갤럭시 S2 4.3인치
x:480, y:800 density:1.5, densityDpi:240
x_inch : 480/240 = 2
y_inch : 800/240 = 3.33
display size : 3.88




참고하세요.