안드로이드 - XML에서 각 단위(px, dip, sp 등)들의 의미 안드로이드 이야기2012. 4. 22. 21:17
안드로이드 개발을 하다보면 XML은 거의 필수적(?)으로 건드리는 경우가 많습니다.
물론 XML을 사용하지 않고 그냥 java 코드만으로 이루어진 프로젝트들도 많이 있지만,
XML을 사용할 경우 좀 더 간편하고 쉽게 어플리케이션의 레이아웃을 만들 수 있습니다.
개인적으로 가장 좋은 방법은 가중치(weight)를 줘서 화면 크기에 관계없는 레이아웃을 작성하는 것이
가장 좋다고 생각하지만...
[안드로이드] 화면 해상도에 관계없는 레이아웃(Layout) 만들기 - http://snowbora.com/422
가중치를 이용할 경우 XML 코드가 복잡해지고 가독성이 떨어지는 단점이 있습니다.
사실 dp(dip) 단위를 사용해도 다양한 디바이스들의 화면 해상도에 큰 영향을 안 받아야 하지만,
삼성의 갤럭시탭7인치를 비롯해서, 너무 괴상한 해상도의 디바이스들이 많아져서 dp(dip) 단위의
효용성이 많이 줄어들었습니다. 하지만, 그래도 알아두면 나쁠 건 없으니....;;;
한 번 나열해보도록 하겠습니다.
1.px
픽셀 단위. 화면의 1픽셀을 나타냅니다. 간단한 프로젝트에서는 오히려 사용하기 편할 수도 있습니다.
2. pt
포인트. 일반적으로 폰트 크기에서 사용합니다. 밀리미터나 인치처럼 모바일내가 아닌 바깥에서의 크기 단위입니다.
인치로 환산하면 1/72 인치입니다.
3. dp (dip)
dp라고 하든 dip라고 하든 상관없습니다. 화면의 dpi 크기가 160dpi 일 때, 1 dp는 1 픽셀입니다.
조금 추상적인 의미라서 사용하기 어렵기도 하고, 정확하지도 않습니다. -_-;;
하지만, 그나마 다양한 해상도를 지원하기 유용한 단위라고 볼 수도 있습니다.
px 단위와의 환산은 dip = px * (160 / density) 입니다.
만약, 480x800 단말기라고 하면, 480x800 단말의 dpi(density)는 240이기 때문에
환산 공식은 dip = px * (160/240) = px * (2/3) 가 됩니다.
4. sp
스케일과 독립적인 픽셀 크기입니다. dp 처럼 유동적인 크기이며, 주로 폰트 크기 단위로 많이 사용됩니다.
5. in
1 인치를 뜻합니다. 모바일 상에서의 크기가 아닌, 실제 1 인치 크기를 나타냅니다.
좀 애매한 단위겠죠? ^^; 1 인치는 2.54 cm입니다.
6. mm
1 밀리미터를 의미합니다.
정답은 없지만, 아무래도 그나마 추천드리는 단위는
크기로는 dp, 폰트에는 sp 단위를 쓰는 것이 가장 좋다고 생각합니다.
경우에 따라서는 px 단위까지는 쓸만한 것 같습니다.
'안드로이드 이야기' 카테고리의 다른 글
안드로이드 - [자바] 자바 날짜/시간 계산 예제 코드 모음 (0) | 2012.04.25 |
---|---|
안드로이드 - 날짜와 시간을 위젯으로 입력받기 (0) | 2012.04.25 |
안드로이드 - SD Card에 폴더 생성하기 (0) | 2012.04.21 |
안드로이드 - 레이아웃 투명 (0) | 2012.04.13 |
안드로이드 - 제곱근 구하기 (0) | 2012.04.07 |