px, dp, dip, sp의 차이점이 뭔가요?


안드로이드에서 px dip dp sp 의 차이점이 뭐에요?

  • 2016년 01월 05일에 작성됨

조회수 2274


2 답변


좋아요
2
싫어요
채택취소하기

px (pixel) 그리고 dpi

디바이스의 스크린에 들어가는 실제 픽셀 (이미지의 파랑 점 1개). alt text 이전의 모든 디바이스(지금의 일반 모니터들) 해상도는 mdpi(160dip)여서 1dp = 1px였으나, 레티나 디스클레이나 그 이상급 해상도들이 나오면서 1px의 크기가 l/m/h/x dip에서 의미하는 값이 달라졌습니다. dpi란 1 인치(inch)당 pixel의 수를 의미합니다. alt text

dp 와 dip (Density Independent Pixel)

px만으로는 해상도에 따라 크기가 달라지기 때문에, 안드로이드 폰의 다양한 해상도를 지원하기 위해 만든 단위입니다. 큰 화면이든 작은 화면이든 실제 눈으로보기에 같은 크기로 보이도록 합니다. 즉, 해상도가 낮은폰에서 1cm정도되는 길이를 높은 해상도의 폰에서도 1cm짜리로 보이도록 되어있습니다. px에서 dp로 변환하는 것은 px/dp 계산기를 참고하세요.

dpi구하는 방법과, java에서 dp를 px직접 바꾸는 방법들은 참고해두세요.

/* dpi와 density 구하는 방법*/
DisplayMetrics outMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(outMetrics);
int dpi = outMetrics.densityDpi;
float density =  outMetrics.density;
/*java코드에서 dp를 px로 바꾸는 방법
java코드에서 density또는 dpi를 이용해서 dp를 px로 변환할 수도 있지만 TypedValue를 이용해서 다음과 같이 구할 수 있다.
*/
public int dpToPixel(int dp){
int px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, DP, context.getResources().getDisplayMetrics());
}

sp(Scale-independent Pixel)

dp와 비슷하지만 추가적으로 사용자가 선택한 글꼴 크기에 의해 크기가 자동으로 조절됩니다. 이 단위는 글꼴 크기를 지정하는 데 사용되도록 권장합니다. 다른 단위를 sp단위로 바꿔야할 경우에는 안드로이드 픽셀계산기를 사용하세요.

요약하자면, 레아이웃 등의 UI적 요소는 dp(dip)을 사용하는 것이 좋고, 글자 크기에는 sp를 사용하는 것이 좋습니다. px이나 pt는 사용하지 마세요.

  • 2016년 06월 01일에 수정됨
    Css / visual design
  • 2016년 01월 31일에 작성됨
    Css / visual design


px는 픽셀이고 sp는 크기에 독립된 픽셀이고 dip랑 dp는 같은 뜻인데 밀도에 독립된 픽셀이라는 뜻입니다.

보통 sp는 폰트사이즈에 사용하고 dip는 아무데나 다 사용 가능합니다. dip는 멀티 디바이스환경을 지원해주기 떄문에 픽셀대신에 dip 나 dp를 쓰시는 것을 권장합니다.

  • 2016년 01월 05일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close