티스토리 뷰

반응형

기존의 웹에서는 텍스트나 이미지 크기를 나타낼 때 px(픽셀)을 주로 사용했습니다.
안드로이드 프로그래밍을 하면서 보면 여기에 dp와 sp라는 새로운 단위가 보입니다.

px: 픽셀(Pixels)
sp: Scale-independent pixel (scaled to relative pixel size on screen)
dp: Device-independent pixel
in: 인치(Inches - based on the physical size of the screen)
mm: 밀리미터(Milimeters - based on the physical size of the screen)
pt: 포인트(Points - 1/72 of an inch based on the physical size of the screen)

px은 화면 위의 점으로 디바이스의 DPI(Dots Per Inch)가 높이지면 1인치당 들어갈 수 있는 점의 수가 많아져 그림이 작아지게 됩니다. 기존의 웹에서 많이 사용하던 단위였죠..

sp는 사용자의 글꼴 크기 설정에 따라 크기가 조정될 수 있습니다. 그래서 스케일에 독립적인 픽셀이라는 겁니다.
즉, 동일한 디바이스에서도 25sp = 25px이 될 수도 있고, 25sp가 30px이 될 수도 있습니다.
안드로이드에서는 주로 텍스트의 크기에만 사용되고 있습니다.

dp는 디바이스에 독립적인 픽셀로서 어떤 화면 크기에서도 동일한 비율을 갖게 됩니다.
예를 들어, G1에서 320dp = 320px 값을 가지고 있습니다. 그러나 갤럭시S와 같은 경우에는 320dp = 480px을 갖게 되지요.
즉, 레이아웃에서 크기를 dp 단위로 설정한다면 디바이스에서의 실제 화면의 픽셀 크기를 고려하지 않고 프로그래밍을 할 수 있다는 겁니다.

결론적으로 안드로이드에서 크기 단위를 사용할 때, 다양한 크기의 디바이스를 고려한다면 px를 지양하고 dp를 사용해야 한다는 겁니다.

안드로이드 개발 문서에도 추후 나올 다양한 안드로이드 기기의 특징을 고려하여 dp와 sp를 사용하라고 이야기 하고 있네요.

http://developer.android.com/guide/practices/screens_support.html
http://developer.android.com/guide/topics/resources/available-resources.html#dimension

그런데 또 다른 의견도 있습니다.
요즘 나오는 안드로이드 디바이스를 보면, 폰/태블릿등 다양하게 나오면서 동일한 해상도인데 DPI가 다른 것도 존재합니다.
즉, 이런 경우에는 오히려 dp로 작업함으로써 이미지 크기가 작게 보이는 문제가 발생할 수 있습니다.

dp를 기준으로 작업하고 각각의 dpi에 대해 최적화 할 것인가?
아니면 px을 기준으로 작업하고 각각의 해상도에 대해 최적할 것인가?
하는 문제는 결국 어플리케이션을 개발하고 설계하는 아키텍처의 몫이 아닌가 합니다.

반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함