2013년 2월 12일 화요일

android - px를 dp(dip) 적용법


안드로이드 단말은 다양한 해상도와 밀도를 조합해서 사용합니다.
모든 단말들에 대해 효과적으로 화면을 호환시키려면 중간 크기의 단말로 기준을 잡고 디자인을 하고 이에 맞는 단위 변환 작업을 통해 코드를 적용하는 작업이 필요합니다.

디자인 가이드는 통상 px을 단위로 사용합니다.
요즘 스마트폰의 경우 ldpi, mdpi, hdpi, xhdpi 등을 사용하는데 xhdpi가 나오기 전에는 mdpi를 기준으로 디자인 하였으나 요즘은 hdpi를 기준으로 디자인하는 것이 좋을듯 합니다.
hdpi를 기준으로 디자인 되었다면,
디자인된 이미지는 res/drawable-hdpi에 위치하면 단말의 density에 맞추어 알아서 맞추어 표시됩니다.
이외 지정된 크기는 아래와 같은 계산으로 dp를 구한 후 dp로 지정하여 사용하면 됩니다.

dp(dip) = px * density

density는 android.util.DisplayMetrics의 density 필드 값으로 hdpi를 기준으로 디자인 되었다면 1.5가 됨.
px = pixel
dip = density independent pixel


참고사항)
위와 같이 작업을 해도 화면의 가로 세로 비율 등으로 인해 화면 전체에 맞추어 표시되지 않을 수 있습니다.
이는 디자인의 기준이되는 단말보다 넓은 dp를 갖는 단말들이 존재하기 때문입니다.
(xhdpi는 360dp, 갤럭시 노트1이나 갤럭시 탭7은 400dp)

이경우는 남는 추가된 영역에 대해 어떤 방식으로 사용할지 결정하여 적용해야 합니다.
화면의 좌/우 여백으로 사용할 수도 있고 N 비율로 구성된 뷰의 크기를 늘릴 수도 있습니다.

댓글 없음:

댓글 쓰기