[Tip] 안드로이드 코드상에서 스크린 사이즈 구분하기. (폰 타블릿 구분)
다음과같은코드를이용하여코드상에서폰과태블릿을구분할수있다.
(코드상에서폰인지태블릿인지를가져올수있다.)
int screenSizeType = (/*context.*/getResources().getConfiguration().screenLayout &
Configuration.SCREENLAYOUT_SIZE_MASK);
if(screenSizeType == Configuration.SCREENLAYOUT_SIZE_XLARGE) {
// 매우 큰 화면 사이즈, 10인치 이상 태블릿 : 갤럭시탭 10.1, 갤럭시노트10.1, 기타 등등.
}
else if(screenSizeType == Configuration.SCREENLAYOUT_SIZE_LARGE) {
// 큰 화면 사이즈, 약 7인치 태블릿 : 넥서스7, 갤탭, 기타 등등.;
}
else/* if(screenSizeType == Configuration.SCREENLAYOUT_SIZE_NORMAL ||
screenSizeType == Configuration.SCREENLAYOUT_SIZE_SMALL) */ {
// 태블릿이아니다(폰) : 갤럭시노트, 갤럭시 S, 베가, 옵티머스시리즈기타폰들.
}
이에대한 자세한 설명은 Configuration 에 대해서 설명한 Android Developer 사이트에서 확인할 수 있다.
대략 요약하자면,context에서 가져온 Configuration 의 인스턴스 내부의 screenLayout 필드 값을 SCREENLAYOUT_SIZE_MASK 으로 인코딩하여 화면 사이즈 종류를 가져올 수 있다.
Android Developer 페이지에 나와있는 설명을 대충 요약하면 이렇다.
SCREENLAYOUT_SIZE_SMALL
설명 : 소형 화면. 저밀도(low-density) QVGA 와 비슷한 크기. - 값 싸고 화면 작은 저가 폰들이 이 범주에 속하
는 것 같다.
레이아웃 사이즈 : 최소, 약 320 x 426 dp.
예 : low-density QGVA, high-density VGA.
SCREENLAYOUT_SIZE_NORMAL
설명 : 일반 화면, medium-density HVGA 와 비슷한 크기. - 일반적인 폰. 갤럭시 노트 포함.
레이아웃 사이즈 : 최소, 약 320x470 dp.
예 : low-density WQVGA , medium-density HVGA , high-density WVGA.
SCREENLAYOUT_SIZE_LARGE
설명 : 대형 화면, medium-density VGA 와 비슷한 크기. - 넥서스7과 갤탭등.
레이아웃 사이즈 : 최소, 약 480x640 dp.
예 : medium-density VGA, medium-density WVGA
SCREENLAYOUT_SIZE_XLARGE
설명 : 초(?)대형 화면, medium-density VGA 와 비슷한 크기 - 현재까지는 갤탭 10.1 갤노트 10.1, 기타10인 근처의 타블릿등등.
레이아웃 사이즈 : 약 720x960 dp 이상.
API 9 부터추가. (진저브레드부터사용할수있다.)